2015-08-25 3 views
0

Что лучше, чем два запроса ниже с точки зрения производительности?
Разница заключается в том, что первый запрос использует отчетливые непосредственно, а второй имеет первый запрос в качестве внутреннего запроса (записи уже фильтруют до различного) (это оракула)Выберите отдельный или отличный от подзапроса

select distinct t1.f1, t2.f2 
from t1, t2 
where ... 

select distinct f1, f2 
from 
select * 
from t1, t2 
where ... 
+1

Почему бы вам не попробовать себя? Взгляните на план выполнения, подготовленный для каждого запроса, и посмотрите, что произойдет. Я предполагаю, что это ничего не изменит, поскольку Oracle вполне способен переписывать запрос за кулисами. – Boneist

+0

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

ответ

0

Если подзапрос выражает ту же логику, то они одинаковы. Подзапрос будет устранен путем преобразования в оптимизаторе.

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