質問
これに関する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 を使用してクエリを分析する方法についても学習する必要があります。コード>
。
パスワードの保存についてもお読みください。
この件に関する優れたブログは次のとおりです。" おそらくパスワードを誤って保存している"
他のヒント
ユーザー名がアプリケーション内で一意でない限り、「"パスワード"」をインデックス化することは本当に意味がないと思います。インデックスは大きくなり、値が追加されないため挿入は遅くなります。
所属していません StackOverflow