【发布时间】:2015-05-12 16:33:37
【问题描述】:
我有这个索引:
alter table wx_cbmessage add index main_query (cbm_owner_id,cbm_status,cbm_date,cbm_notification_date);
这个查询:
SELECT SQL_CALC_FOUND_ROWS ...
FROM `wx_cbmessage` `msg` FORCE INDEX (main_query)
LEFT JOIN wx_user `from` ON cbm_from_user_id=from.login
WHERE `cbm_owner_id`='username'
AND cbm_date <= 1431448013
AND (`cbm_notification_date`=0 OR cbm_notification_date <= 1431448013)
AND `cbm_status`=1
ORDER BY `cbm_date` DESC
LIMIT 25
将cbm_notification_date 作为索引的一部分有什么意义吗?可以用吗?
前两列只是完全匹配,但我不知道 MySQL 是否可以对多个范围搜索进行任何操作。
【问题讨论】:
-
解释告诉你什么?
-
@Strawberry 不多。它告诉我它正在使用索引,但不是索引的哪些部分。
ref实际上是NULL当我使用FORCE INDEX但如果我不强制它说const,const,我认为这意味着前两列是恒定时间查找 - 这是否意味着其他两列不是根本没用过还是什么?
标签: mysql optimization indexing