基本上,我有一個臨時表,我用不同的技術填充表中的相同數據,以找到我的情況中最快的一個。這三種方法是:不同的執行計劃與臨時表相同日期
- 選擇使用聯接
- 選擇其中大部分 表/邏輯/計算被包括在內聯函數
- 選擇插入的信息插入信息插入信息,其中大部分 表/表值函數中包含邏輯/計算結果
使用每種方法時,表中都會填充相同的數據,並使用表值函數獲得最佳性能。但這裏的事情很奇怪。
臨時表填充後,會對所有列使用GROUP BY和ORDER BY對其進行簡單SELECT。因爲數據是我期望的一樣執行計劃一樣,但是我得到這個:
其中第一行是表值函數,第二個執行計劃的執行計劃第一種和第二種方法。
爲什麼我有兩個不同的執行計劃表具有相同的數據?爲什麼它不總是使用第一個,因爲它比第二個更快?
請注意,因爲這與正在對數據進行排序和分組有關,所以當我使用表值函數時,可能日期已經排序,但簡單選擇結果會顯示數據在在每種情況下都是一樣的。
哇你應該在查詢優化器的早期出現過。查詢優化器只能在查詢結構內運行。你今天仍然可以提示。連接,存在和相交都可以是通常具有不同查詢計劃的等同查詢。 – Paparazzi
在這種情況下,我專注於最後一個SELECT,目的是使用ORDER BY和GROUP BY子句顯示臨時表中的所有記錄。因爲我有相同的信息,我期待着相同的計劃。我沒有比較我使用不同方法的陳述的第一部分。 – gotqn
所以不清楚。你的問題是關於你甚至沒有發佈的選擇語句? – Paparazzi