У меня очень медленный запрос, потому что я использую ORDER BY. Теперь я понимаю, почему это медленно, но я понятия не имею, как сделать это быстрее.
В таблице было около 900 000 записей. (причина, почему это медленно)
SELECT SQL_NO_CACHE id, name
FROM users where is_provider = 0
AND activated_at IS NOT NULL
AND is_ngo = 0
AND deleted_at is NULL
AND is_cancelled = 0
ORDER BY name
LIMIT 60000, 90;
Я использую лимит, потому что я использую разбиение на страницы. SQL_NO_CACHE, потому что я не хочу использовать кеш для тестирования.
Этот запрос занимает около 60 секунд, что слишком долго. Это фоновая задача, поэтому, если я смогу повторить ее за 5 секунд, все будет в порядке.
У меня есть индексы для столбца activ_at иDeleted_at, которые являются полями времени. Остальные являются логическими, поэтому индексы не нужны.
Спасибо