Большие базы данных любого типа ограничены скоростью диска. Вы будете переключаться с одной базы данных, связанной с вводом / выводом, на другую базу данных, связанную с вводом / выводом.
Вместо этого давайте посмотрим на детали того, что вы делаете. «Точечный запрос» для таблицы миллиардов строк займет всего несколько миллисекунд, даже с медленным диском. Это потому, что любая база данных (которую стоит использовать) сможет быстро найти строку по индексу * .
Итак, очевидно, у вас либо нет подходящего индекса, либо вы делаете что-то сложное. Давайте посмотрим SELECT
и схему (SHOW CREATE TABLE
). Это может быть что-то простое, например, добавление «составного» индекса или переформулировка запроса. Смена поставщиков вряд ли будет решением.
Хорошо, вы дали нам подсказку: where date LIKE '201808%'
. Я надеюсь, что date
это DATETIME
или TIMESTAMP
. Он не может использовать индекс, потому что ему нужно преобразовать каждый date
в строку перед выполнением LIKE
; отсюда сканирование таблицы. Вместо этого выполните:
WHERE date >= '2018-08-01`
AND date < '2018-08-01` + INTERVAL 1 MONTH
Что может использовать индекс.
Есть ли что-то еще в WHERE
? using inex condition
звучит так, как будто есть что-то еще. Пожалуйста, покажите нам весь SELECT
.
У вас есть LIMIT 10000
. может или не может ускорить запрос. Также есть ORDER BY
? GROUP BY
? Это может потребовать своего рода. Когда происходит сортировка, вся работа выполняется до того, как будет замечен LIMIT
.