В , он использует индекс покрытия для оптимизации лимита запроса, подобного этому. Я использовал базу данных sakila , загруженную с официального сайта MySQL. Вот запрос:
SELECT a.film_id, a.description
from sakila.film a
inner join (
select film_id
from sakila.film b
order by title limit 50,5
) as lim
USING(film_id)
Но я использую объяснение для анализа процесса. Похоже на это.
В третьей строке показано, что он все еще сканирует все 1000 строк.
Затем я протестировал подзапрос select film_id from sakila.film b order by title limit 50,5
, журнал объяснения, подобный этому .
В моем мнении третья строка в первом журнале должна быть похожа на вторую, и я не знаю, как объяснить первые 2 строки
в первом журнале, почему строки 55 и 1, я думаю, может быть, они должны быть 5 и 5. Это официальная демонстрация MySQL. Я думаю, это из-за версии mysql.
Я обновляю свой mysql до 8.0.11.0, он стал немного более нормальным, как этот
Я тестировал один и тот же набор данных int mysql8.0 и mysql5.6, в mysql5.6 для извлечения данных требуется всего 0,2 с, а в mysql8.0 для этого нужны 1 с. Чем они отличаются? А также
Первый ряд все еще 905, а не 5. Может кто-нибудь сказать мне причину и почему первый ряд 905, второй ряд 1?