我想从中选择列的text
内容entrytable
。
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)
解释结果是:
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 秒,表中有大约一百万个条目)