【发布时间】:2012-12-17 17:38:28
【问题描述】:
我想从entrytable中选择text列的内容。
EXPLAIN SELECT text
FROM entrytable
WHERE user = 'username' &&
`status` = '1' && (
`status_spam_user` = 'no_spam'
|| (
`status_spam_user` = 'neutral' &&
`status_spam_system` = 'neutral'
)
)
ORDER BY datum DESC
LIMIT 6430 , 10
该表有三个索引:
- index_user(用户)
- index_datum(基准)
- index_status_mit_spam(status、status_spam_user、status_spam_system)
EXPLAIN 结果是:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE entrytable ref index_user,index_status_mit_spam index_user 32 const 7800 Using where; Using filesort
-
possible_keys是 MySQL 可能想要使用的索引,而keys是 MySQL 实际使用的索引吗? - 为什么没有使用索引
index_status_mit_spam?在查询中,列的顺序与索引中的相同,... - 为什么索引
index_datum不用于ORDER BY? - 如何优化我的表索引或查询? (上面的查询最多需要 3 秒,表中有大约一百万个条目)
【问题讨论】:
标签: mysql query-optimization explain