2013-02-23 3 views
0

Я изучаю оптимизацию запросов. В общем, применение PROJECT и SELECT до JOIN даст вам лучшую производительность. Мой вопрос:Оптимизация запросов: применить SELECT, PROJECT до JOIN

Есть ли случаи, когда применение операции SELECT перед применением операции JOIN или применение операции PROJECT перед применением операции JOIN будет лучше?

Благодарим за отзыв.

+3

Что такое работа PROJECT? Какой SQL-продукт вы используете? –

+0

@AndriyM: 'PROJECT' - это реляционное выражение для взятия подмножества столбцов ;; 'RESTRICT' принимает подмножество строк. См. Например: http://www.cs.scranton.edu/~mccloske/courses/cmps340/rel_alg_intro_lec.html – wildplasser

+0

Оптимизация запросов - сложный бизнес, зависящий от многих факторов. Если использование проекта/выбора/ограничения препятствует использованию индексов, то «да», применяя их вначале, может привести к ухудшению производительности. –

ответ

1

«Pushing selection» down - одна из основных стратегий оптимизации, которая может уменьшить количество операций ввода-вывода, которые необходимо выполнить.

Например, выбор, содержащий предикат sargable, если он подтолкнут к соединению, эффективно уменьшит количество операций ввода-вывода, уменьшив количество кортежей во внешнем отношении (для вложенных Loops Join требуется |R|+|R|*|Q| I/O).

Основной недостаток отталкивания выборки - это ситуация, при которой существующие индексы по исходному отношению не могут быть использованы. Решение о том, следует ли нажать или нет, выполняется в сочетании с выбором метода объединения.

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

Смежные вопросы