我有一个查询,在开发和生产(相同的数据库,相同的数据)上产生不同的优化器结果。MySQL使用index_merge并相交而不是参考和其中
我的机器上查询运行在大约为5ms
对生产的查询中运行〜300-500ms
唯一的区别我能找到的是该行的EXPLAIN EXTENDED结果(和MySQL版本):
好的查询
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: activities
type: ref
possible_keys: index_activities_on_is_archived,index_activities_on_equipment_id,index_activities_on_date_completed,index_activities_on_shop_id
key: index_activities_on_shop_id
key_len: 5
ref: const
rows: 1127
filtered: 100.00
Extra: Using where
坏查询
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: activities
type: index_merge
possible_keys: index_activities_on_is_archived,index_activities_on_equipment_id,index_activities_on_date_completed,index_activities_on_shop_id
key: index_activities_on_shop_id,index_activities_on_is_archived
key_len: 5,2
ref: NULL
rows: 1060
Extra: Using intersect(index_activities_on_shop_id,index_activities_on_is_archived); Using where
我不知道该从哪里开始调试。这是MySQL版本和生产运行旧数据库的问题吗?
我的本地版本5.5.15 生产:5.0.95日志提前
感谢