使用一个索引与多个索引时性能差异的原因

时间:2013-04-05 06:51:00

标签: mysql indexing

假设我们有一个名为impression的表,有三个字段

id

site_id

timestamp

这三个字段都是INT。我们必须运行以下查询

SELECT COUNT( * ) AS c FROM impression
 WHERE timestamp<UNIX_TIMESTAMP(STR_TO_DATE('09,07,2009','%d,%m,%Y'))
 AND site_id=11

首饰

如果我定义了两个单独的索引,一个在timestamp上,一个在site id上,那么我得到的结果更慢。在某个数据集上,此结果需要0.13 s来计算。

但是,如果我定义一个复合索引,其中包含这两个字段,那么结果会快得多0.0002 s

问题

为什么所有索引字段必须在一个索引下?如果你有两个单独的索引,那么为什么不使用它们

注意

是的,我可以EXPLAIN查询,但这不是问题,解释已经建议我观察到了什么,但为什么每个查询只需要一个索引

0 个答案:

没有答案