2013-06-29 58 views
0

這是我的查詢示例。如何在每個步驟中獲取查詢執行的結果?

select * 
from employee as a 
where 1=(select count(distinct(b.salary)) 
from employee as b 
where a.salary<b.salary) 

我想知道我的外部查詢和內部查詢運行多少次。有沒有辦法處理查詢內的計數器?就像在visual studio中一樣,我們可以在循環的每次迭代中觀察任何變量的值,類似地,我們可以在任何步驟中看到外部和內部查詢的結果嗎?有沒有用於此目的的工具?任何方法?

在此先感謝。

+0

您使用的是什麼rdbms?對於SQL Server,[** Profiler **](http://msdn.microsoft.com/en-us/library/ms181091.aspx)是正確的工具。 –

+0

我正在使用sql server 2008. –

回答

0

當您執行此查詢時,獲取實際的執行計劃。它會告訴你什麼是執行計數。以下是如何得到它:How do I obtain a Query Execution Plan?

這是不可能通過SQL代碼。 SQL的全部想法是在之間分隔結果,結果如何獲取。因此,如何執行SQL代碼可能看起來很像您的查詢。 SQL代碼的每個部分都有多個操作可以執行相同的操作,但是會根據數據執行不同的操作。

例如,如果您在僱員中沒有任何索引,那麼您的查詢將是一個嵌套的表掃描循環。如果這些表很大,則可能只有一次表掃描和一個排序表和一個表緩存來重用該已排序的臨時表。如果你有薪水指數,那麼將會有一個嵌套循環和一堆索引掃描。

總之,得到實際的執行計劃,看看究竟是究竟是在做什麼。

+0

感謝您的回覆,但這篇文章沒有給我答案。例如,我有兩張桌子。 A&B。如果對於表A的每一行,B被完全掃描。我只是想知道在給定的條件下哪些值被比較以及哪一行是在每一步中返回的。總之,我想要一個完整的畫面,就像整個手術在我面前在現實生活中一樣完成,我正在用我的眼睛觀察整個手術。謝謝 –

+0

@HamidMahmood執行計劃顯示SQL Server在做什麼。它會告訴你B被完全掃描了多少次。 (如果你關心績效,它不應該這樣做)。我已經更新了我的答案,以及如何獲得執行計劃。 –

相關問題