MYSQL普通索引的两种建立方式的区别


   
  //  方式一,即很多个字段都使用一个索引名
  
KEY `lastpost` (`lastpost`,`scores`,`goodpost`,`badpost`,`notpost`)
// 方式二,一个字段一个索引名
KEY `column_id` (`column_id`),
KEY `title` (`title`),
KEY `posttime` (`posttime`),
KEY `attr` (`attr`)

小弟不才对MYSQL优化方面还不是很懂,所以想请教下,这两种有什么区别,每个的优势在哪里??

mysql

木亥弓单亻吏 10 years, 6 months ago

多个单列索引,MySQL只能用到其中的那个它认为似乎是最有效率的单列索引。

条件复杂时,组合索引肯定比单列性能要好,但一些额外条件下不同.

有一篇文章就是介绍这个的, Multi Column indexes vs Index Merge ,具体你可以看这篇文章,我只说下结论

  1. 对于具有2个用and连接条件的语句,且2个列之间的关联度较低的情况下, 组合索引 有一定优势。
  2. 对于具有2个用and连接条件的语句,且2个列之间的关联度较高的情况下, 组合索引 有很大优势。
  3. 对于具有2个用or连接条件的语句, 单列索引 有一定优势,因为这种情况下 组合索引 将会导致全表扫描,而前者可以用到index merge的优化。

数据对比

   
  2个单列索引   一个列         复合索引
  
低关联度and 70ms 290ms 10ms
高关联度and 360ms 290ms 300ms
or 66ms 3370ms

资料参考
复合索引和多个单列索引的效率比较

keylito answered 10 years, 6 months ago

Your Answer