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感谢您的宝贵贡献