2014-06-19 14 views
1

說我有經典:如何並行一個簡單的SELECT查詢?

select * from employees where dob < to_date('10/10/1985', 'DD/MM/YYYY');

表是巨大的,所以我想parallelise此查詢。

由什麼我可以看到這裏發生了:

http://docs.oracle.com/cd/B10500_01/server.920/a96524/c20paral.htm#13255

從本質上講就是我們想要做的是arbitarily砍表爲n個部分,並在不同的線程運行我們的每塊select語句,然後在最後加入他們。

  1. 平行化在這裏適合嗎?
  2. 我該如何編寫查詢?
+2

您只需在'dob'上放置一個索引並讓引擎找出如何運行查詢。 –

+0

@GordonLinoff是否是並行處理必不可少的指標? – dwjohnston

+0

不,但它是提高性能的最合理的方法。 –

回答

1

試試這個:

select /*+ PARALLEL(4) */ * from employees 
where dob < to_date('10/10/1985', 'DD/MM/YYYY'); 

見從Oracle Hint更多。

另請參閱此answer以瞭解爲什麼PARALLEL未應用於您的SQL語句。

+0

謝謝明。這是我認爲正確的解決方案。我現在遇到的麻煩是確定它是否實際上給了我一個改進。 – dwjohnston

+0

只需要嘗試。這是性能調整的唯一方法:) – MinhD

+0

當您說全面掃描時,是指單個線程的完整掃描嗎?或者將表格分成塊並對每個塊計數進行全面掃描? – dwjohnston