문제

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.


또한 비밀번호 저장에 대한 자세한 내용도 읽어야합니다.

다음은 주제에 대한 좋은 블로그입니다. "아마도 암호를 잘못 저장하고있을 것입니다"

다른 팁

응용 프로그램에서 사용자 이름이 고유하지 않으면 "비밀번호"를 색인하는 것이 실제로 적합하지 않다고 생각합니다. 인덱스가 커지고 삽입물이 부가가치없이 느려집니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top