Классика баз данных - статьи

       

Комбинирование и устранение сортировок


Сортировка может выполняться либо для устранения дублирующих значений, либо для упорядочивания данных. Оптимизатор рассматривает 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 образуют префикс ключа уникального индекса.



Содержание  Назад  Вперед