Задавайте вопросы, мы ответим
Вы не зашли.
Ребят, подскажите-ка, выполняю запрос, который считает количество записей конкретного пользователя в заданном промежутке времени с разбивкой по дням:
Неактивен
Не понятно, почему 7 секунд. В первом случае сканируется 900 476 строк, во втором —
2 295 888, что больше по крайней мере в два раза. Т.е. если оценки по количеству
строк правильные, то оптимизатор выбирает правильный план выполнения. Если оценки
не правильные — можно попробовать сделать OPTIMIZE TABLE — оно пересчитает cardi-
nality индексов, и будет выдавать более правдоподобные значения.
Неактивен
В первом случае выбираются 900 тысяч строк из 20 миллионов, а во втором из 3х миллионов.
Я понимаю так: в первом шаге определилось Х строк, потом смотрим другую таблицу по заданным условиям используя найденные записи первого шага. А связь s к sn идёт один ко многим, потому найти в первой таблице меньшее количество строк проще, чем бОльшее во второй.
Я, честно говоря, не совсем понимаю почему во втором шаге 6 написано. Дословно это что значит?
Оптимизацию попробую, может и правда мусора много мешается под ногами... Данных много, оптимизацию хоть бы раз в год кто-то запускал)))
Неактивен
Это значит, что MySQL ожидает получить из второй таблицы 6 строк на каждую
строку из первой таблицы.
Неактивен