из таблицы выбирается лишь небольшая доля строк, т. е. при
высокой селективности
выборки. В случае использования предложения ORDER BY в комбинации с LIMIT
n
явная сортировка (при отсутствии индекса) потребует обработки всех строк таблицы
ради того, чтобы определить первые
n
строк. Но если есть индекс по тем же столбцам,
по которым производится сортировка ORDER BY, то эти первые
n
строк могут быть
извлечены непосредственно, без сканирования остальных строк вообще.
Если для таблицы «Билеты» (tickets) еще не создан индекс по столбцу book_ref, то со-
здайте его:
CREATE INDEX tickets_book_ref_test_key
ON tickets ( book_ref );
CREATE INDEX
Выполните запрос, в котором используется предложение LIMIT:
SELECT * FROM tickets ORDER BY book_ref LIMIT 5;
...
Время: 0,442 мс
Удалите этот индекс и повторите запрос. Время его выполнения увеличится, вероят-
но, на два порядка.
При создании индексов может использоваться не только возрастающий порядок зна-
чений в индексируемом столбце, но также и убывающий. По умолчанию порядок воз-
растающий, при этом значения NULL, которые также могут присутствовать в индек-
сируемых столбцах, идут последними. При создании индекса можно модифициро-
вать поведение по умолчанию с помощью ключевых слов ASC (возрастающий поря-
док), DESC (убывающий порядок), NULLS FIRST (эти значения идут первыми) и NULLS
LAST (эти значения идут последними). Например:
Достарыңызбен бөлісу: