Оптимизация запроса разбивки на страницы с помощью метода поиска - PullRequest
0 голосов
/ 03 июля 2018

Это, кажется, очень распространенный вопрос, но он не нашел решения для всех случаев.

Я искал множество статей для оптимизации запроса разбивки на страницы в MYSQL, я нашел Метод поиска как лучшее решение.

Но в каждом примере метода поиска я обнаружил, что условие order by в полях с числами или типом даты: что, если мы упорядочиваем по столбцу типа varchar (например, first_name), который также может содержать пустые и нулевые значения, я try (first_name, id) <(null, 15) AND (first_name, id) <('', 15), которые показывают неопределенный результат. </p>

Пожалуйста, предложите, как мы можем обрабатывать эти случаи также в методе поиска.

Ответы [ 2 ]

0 голосов
/ 04 июля 2018
    WHERE (first_name, id) < ('', 15)

Отличный синтаксис , но производительность отстой ! Оптимизатор не знает, как использовать любой индекс, чтобы помочь с таким. Вы должны превратить его в сложное выражение AND и OR. И Вы должны иметь INDEX(first_name, id) в этом порядке.

Что касается выражения и т. Д., Детали прописаны здесь .

PS, не используйте first_name < NULL; NULL по сравнению с чем угодно всегда FALSE. Например:

mysql> SELECT 'Rick' < NULL, 'Rick' > NULL, 'Rick' = NULL, 'Rick' != NULL;
+---------------+---------------+---------------+----------------+
| 'Rick' < NULL | 'Rick' > NULL | 'Rick' = NULL | 'Rick' != NULL |
+---------------+---------------+---------------+----------------+
|          NULL |          NULL |          NULL |           NULL |
+---------------+---------------+---------------+----------------+

NULL работает как FALSE при тестировании в WHERE.)

0 голосов
/ 04 июля 2018

Неважно, какие типы столбцов вы используете для упорядочивания строк, если они «сортируются» базой данных. Это включает в себя практически все числа, varchars, даты / время и т. Д.

Распространенным исключением являются полные данные, такие как BLOB, CLOB, BINARY и т. Д. Этот список очень специфичен для базы данных, поэтому проверьте, какие типы данных могут участвовать в ORDER BY в вашей базе данных.

Также обратите внимание, что для правильного использования метода поиска в списке столбцов, которые вы используете для заказа, должен быть создан уникальный ключ. В противном случае нумерация страниц может работать «смешно».

...