Mysql 为什么在使用一个索引和多个索引时会出现性能差异

Mysql 为什么在使用一个索引和多个索引时会出现性能差异,mysql,indexing,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 从impression中选择计数(*)作为c 然而,MySQL在5.0以后可以使用的地方,很

假设我们有一个名为
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
从impression中选择计数(*)作为c

然而,MySQL在5.0以后可以使用的地方,很大程度上取决于索引的基数,并且它估计索引合并的成本(这与使用复合索引不同)比仅使用1个索引的扫描结果要高。如果您觉得这是错误的,可以先尝试使用
分析表
来更新基数,但复合索引对我来说似乎是一个很好的解决方案。@Wrikken感谢您的宝贵贡献