我有一个查询SELECT.. WHERE user_id='' && date>:expire && used=0;
当我尝试创建索引时。我应该在一个查询中一起创建所有内容,如
CREATE INDEX new_index ON table (user_id, date, used)
或者我应该将它们分开并为每列创建索引?
答案 0 :(得分:1)
这实际上取决于您如何规划查询这些列。你最安全的赌注只是为每一列制作索引,尽管这可能无法产生最佳性能。
多列索引适用于以下情况:
例如,对于您提议的组合索引(user_id,date,used),您只能在以下条件下使用索引:
您将无法利用这些案例的索引
如需进一步阅读,请参阅以下有关多列索引的MySQL文档:
http://dev.mysql.com/doc/refman/5.5/en/multiple-column-indexes.html
答案 1 :(得分:0)
根据您的查询,您应该使用多列索引。但是,正确的索引是:
CREATE INDEX new_index ON table (user_id, used, date)
请注意,date
在索引中是最后一位,因为您有不平等。
MySQL碰巧就多列索引及其使用方式进行了很好的讨论here。