MySQL多列索引

  • 本文关键字:索引 MySQL mysql sql
  • 更新时间 :
  • 英文 :


我有一张表。但在phpmyadmin中;创建索引时,我脑子里有东西卡住了。选择并创建多个列时,将为3列创建一个索引。

这与逐个在列上创建索引有何不同?

此外,哪些列更有意义为以下查询创建索引?

tbody><1>
id 用户名 永久链接
2 示例 实例

创建索引时,有些操作会更慢(如插入(,并且会消耗更多的磁盘空间和内存。

您应该在具有高基数的列(具有非常不常见或唯一值的列(上创建索引,并在WHERE子句中使用该索引以使它们更快。

例如,对于permalink列,您应该有一个索引,但由于基数较低,status上没有索引。如果WHERE子句中有3列,那么在所有3列上都有一个复合索引可能会更快。

.. WHERE column1 = 'a' AND column2 = 'b' AND column3 = 'c'

首先,为具有高基数的列单独创建索引。在您有大量数据并且系统开始减速后,使用EXPLAIN SELECT。。。查询,以了解查询中使用了哪些索引。然后根据需要使用复合索引进行优化。我使用JetProfiler或NewRelic之类的工具来监控系统并查找慢速查询。你不可能从一开始就预料到一切。此外,MySQL慢速查询日志是查找需要优化的内容的好地方。

https://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html

对于使用所有i列组合的查询,将多个i的列索引在一起。

假设您有tablecolumn1column2。您应该为这两列建立索引(首先考虑它们的类型和大小(,以便查询SELECT * FROM table WHERE column1 = something1 AND column2 = something2

请记住,这并不总是最佳的做法(另一个答案解释了原因(:(

最新更新