Я хочу выбрать содержимое столбца 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 (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 секунд, имея около миллиона записей в таблице).