Комбинирование и устранение сортировок
Сортировка может выполняться либо для устранения дублирующих значений, либо для упорядочивания данных. Оптимизатор рассматривает SELECT DISTINCT, агрегатную функцию, содержащую DISTINCT, раздел GROUP BY и раздел ORDER BY как запросы сортировки данных. Поскольку сортировка является одной из наиболее трудоемких операций при выполнении запроса, оптимизатор комбинирует сортировки при возникновении следующих условий:
- список выборки оператора SELECT DISTINCT является подмножеством списка столбцов упорядочивания раздела ORDER BY или списка столбцов группировки раздела GROUP BY;
- столбцы группировки раздела GROUP BY образуют подмножество столбцов упорядочивания раздела ORDER BY; столбцы группировки образуют префикс столбцов упорядочивания;
- столбцы упорядочивания раздела ORDER BY образуют подмножество списка выборки оператора SELECT DISTINCT или столбцов группировки раздела GROUP BY.
Кроме того, оптимизатор устраняет сортировку, когда можно использовать индекс, в следующих случаях:
- Индекс обеспечивает порядок данных, требуемый разделами GROUP BY или ORDER BY.
- Столбцы группировки или весь список выборки SELECT DISTINCT образуют префикс ключа уникального индекса.
Содержание Назад Вперед