質問

これに関するMySQLのドキュメントはあまり明確ではありません。既存のテーブルにインデックスを追加したい。このテーブルは、ログインIDとパスワードを持つユーザーテーブルです。このためのインデックスを作成して、ログインを最適化します。

これは、私が試してみようと思った方法です:

mysql> ALTER TABLE `users` ADD INDEX(`name`,`password`);

作成されたもの:

mysql> show index from karmerd.users;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+   
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |    
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+    
| users |          0 | PRIMARY  |            1 | id          | A         |           2 |     NULL | NULL   |      | BTREE      |         |     
| users |          1 | name     |            1 | name        | A         |           2 |     NULL | NULL   |      | BTREE      |         |     
| users |          1 | name     |            2 | password    | A         |           2 |     NULL | NULL   | YES  | BTREE      |         |     
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+

これは私がやろうとしていたことを達成しましたか? (ログインの最適化?)以前は、「id」というフィールドに主キーしかありませんでした。

役に立ちましたか?

解決

はい、これでインデックスの作成が完了しました。インデックスの名前は" name " (インデックスに名前を付けないと、インデックスで指定した最初の列を使用しようとします)。インデックスは、2つの列の複合体です。位置1の name と位置2の password です。

これがロギングを最適化するかどうかは、クエリがインデックスを使用するかどうかによって異なります。また、 EXPLAIN


パスワードの保存についてもお読みください。

この件に関する優れたブログは次のとおりです。" おそらくパスワードを誤って保存している"

他のヒント

ユーザー名がアプリケーション内で一意でない限り、「"パスワード"」をインデックス化することは本当に意味がないと思います。インデックスは大きくなり、値が追加されないため挿入は遅くなります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top