我必须从一个大约有一百万个条目的表中选择值。我的哪项查询效率更高?
查询1:
select * from table1
where indexedcolumn1 < value1
and unindexedcolumn1 < value 2
and indexedcolumn2 < value2;
问题2:
select * from table1
where indexedcolumn1 < value1
and indexedcolumn2 < value2
and unindexedcolumn1 < value 2;
如何充分利用索引?
2条答案
按热度按时间9rnv2umw1#
索引3列中的每一列。优化器将根据统计信息选择最佳索引。它可能仍然使用错误的索引,但它是当前可用的最佳索引。
sg2wtvxw2#
whe子句中的条件序列(列)没有任何意义,因为mysql查询优化器没有考虑它。所以(如上所述)您的查询是相同的。
使用explain(例如:explain select*from….)命令找出服务器执行查询的方式。在google的官方文档中阅读更多关于解释输出的内容(有很多关于解释的好文章)。
尝试索引未索引的列,因为这是提高查询性能的最佳(而且我猜是唯一的)方法。一个没有索引的列通常会破坏所有其他的工作。