2013-02-23 33 views
0

我正在學習有關查詢優化。一般來說,在JOIN之前應用PROJECT和SELECT會給你更好的性能。我的問題是:查詢優化:將SELECT,PROJECT加盟之前

是否有任何情況下,申請JOIN操作或應用JOIN操作會更好之前將項目運作之前將SELECT操作?

感謝您的回覆。

+3

什麼是PROJECT操作?你在使用什麼SQL產品? – 2013-02-23 14:16:44

+0

@AndriyM:'PROJECT'是關係數列的一個子集, 'RESTRICT'正在取行的一個子集。例如見:http://www.cs.scranton.edu/~mccloske/courses/cmps340/rel_alg_intro_lec.html – wildplasser 2013-02-23 15:20:09

+0

查詢優化是一個棘手的業務,取決於很多因素。如果使用project/select/restrict阻止索引的使用,那麼「是」,先應用它們可能會導致性能下降。 – 2013-02-23 15:54:11

回答

1

「推選」下來是基本的優化策略可以減少I/O的需要進行量之一。例如,如果在連接下推送一個包含sargable謂詞的選擇,通過減少外部關係中的元組數(嵌套循環連接需要|R|+|R|*|Q| I/O),將有效地減少I/O數。

推動下選擇的主要缺點是不能使用的原始關係的現有指標的情況。是否推送的決定與連接方法的選擇一起進行。

同樣,您可以「推」的投影,如果它保留所需加入的屬性了。