我已经了解了当您制作多列索引时订单的重要性以及通常您希望WHERE子句中出现的列优先于其他ORDER BY等的列。但是,赢了&t如果你只是单独索引每个人,你也会加快速度吗? (显然不是因为我自己的实验表明,组合索引行为可能比简单地将每个索引行为单独编入索引要快得多)。什么时候应该使用多列索引以及哪些类型的查询会增加?
答案 0 :(得分:3)
对于所有条件都是多列索引的一部分的情况,多列索引将是最有效的 - 甚至比具有多个单个索引更为有效。
另外,请记住,如果您有多列索引,但不使用由多列索引索引的第一列(或者不从头开始并保持与先前使用的相邻)索引),多列索引不会有任何好处。 (例如,如果我对列[B,C,D]有一个索引,但是有一个仅使用[C,D]的WHERE,则这个多列索引将没有任何好处。)
参考:http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html:
MySQL可以对测试所有内容的查询使用多列索引 索引中的列,或仅测试第一列的查询, 前两列,前三列,依此类推。如果你指定 索引定义中的列顺序正确,单个 复合索引可以加快几种查询的速度 表
答案 1 :(得分:2)
简短的回答是,“这取决于。”
答案很长:如果你有时会这样做
WHERE COL1 = value1 and COL2 = value2
有时会这样做
WHERE COL1 = value1
但从未,或几乎从未做过
WHERE COL2 = value2
然后(COL1,COL2)的复合指数将是您的最佳选择。 (对于mySQL以及DBMS的其他品牌和型号都是如此。)
更多索引会降低INSERT和UPDATE操作的速度,因此它们不是免费的。
答案 2 :(得分:1)
复合指数(c1,c2)在以下情况下非常有用: