문제
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
"(인덱스에 이름을주지 않으면 인덱스에 지정한 첫 번째 열을 사용하려고합니다). 인덱스는 두 열의 복합재입니다. name
위치 1 및 password
위치 2에서.
이것이 로깅을 최적화할지 여부에 따라 쿼리가 인덱스를 사용하거나 사용하지 않는 방법에 따라 다릅니다. 쿼리를 분석하는 방법에 대해서도 배워야합니다. EXPLAIN
.
또한 비밀번호 저장에 대한 자세한 내용도 읽어야합니다.
다음은 주제에 대한 좋은 블로그입니다. "아마도 암호를 잘못 저장하고있을 것입니다"
다른 팁
응용 프로그램에서 사용자 이름이 고유하지 않으면 "비밀번호"를 색인하는 것이 실제로 적합하지 않다고 생각합니다. 인덱스가 커지고 삽입물이 부가가치없이 느려집니다.
제휴하지 않습니다 StackOverflow