【问题标题】:Adding an index to a MySQL table向 MySQL 表添加索引
【发布时间】:2009-01-03 02:00:19
【问题描述】:

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”的字段的主键。

【问题讨论】:

  • RE:“MySQL 文档对此不是很清楚。” - 这适用于很多事情。 :)
  • 感谢格式化方面的帮助,不知道该怎么做。
  • 任何以四个空格开头的行都是代码格式的。或者您可以选择一堆文本并单击“010101”图标,它会为您完成。

标签: mysql indexing


【解决方案1】:

是的,这实现了创建索引。该索引被命名为“name”(如果您不给索引命名,它会尝试使用您在索引中指定的第一列)。该索引由两列组成:name 位于位置 1,password 位于位置 2。

至于这是否会优化日志记录,这取决于您的查询可能会或可能不会使用索引。您还应该了解如何使用EXPLAIN 分析查询。


您还应该阅读有关存储密码的更多信息。

这是一个关于这个主题的好博客:“You're Probably Storing Passwords Incorrectly

【讨论】:

  • 我的登录查询基本上是 SELECT id FROM users WHERE name="name" AND password=SHA1("password")
  • 其实好像是在使用key:mysql> explain select id from users where name = "name" and password=SHA1("password");键列中有“名称”。
  • 那个“解释”位真的很有帮助,不知道那谢谢!
【解决方案2】:

除非用户名在您的应用程序中不是唯一的,否则我认为索引“密码”是没有意义的;索引会更大,插入会更慢,因为没有附加值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 2016-03-22
    • 2011-03-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多