2011-03-29 32 views
0

我有兩個表格,一個有60個lacs記錄作爲主數據。另一張表包含一些搜索條件。現在我需要做一個內部連接。我有兩個選擇。主數據內部連接條件或條件內部連接主數據。哪一個會證明更有效率?是內連接等價關係嗎?

換句話說,在一定的條件下,B可以證明B更有效嗎?

+1

我猜「60 lacs」的意思是60十萬= 60 * 100.000,即600萬條記錄嗎? – 2011-03-29 10:24:47

+0

是的,從印度的起源,我們幾乎不使用術語百萬:) – harrisunderwork 2011-03-29 10:38:44

+2

哇。所以「lacs」(lakhs)是什麼!我一直很好奇! – 2011-03-29 10:42:16

回答

1

根據SQL標準,它們是等效的。實際上,數據庫引擎的查詢優化器可以自由地將其重寫爲更快運行的表單。

在我遇到的大多數數據庫引擎中,它們是完全等效的。

但是,如果您在談論OUTER JOIN的話,那麼左右排序是顯着的,不僅僅是出於性能的原因。

+0

我檢查了一個內部聯接B和B內部聯接A.執行時間有很大差異。我怎麼能證明這一點?此外,搜索條件表是臨時表,A是內存表。 – harrisunderwork 2011-03-29 10:40:04

+0

你能發佈您的查詢嗎?它在SQL Server中應該沒有區別。查詢優化器應該照顧它。 – 2011-03-29 10:42:59

+0

由於公司SLA,我不能發佈任何代碼。但我會嘗試發佈一些小代碼。 – harrisunderwork 2011-03-29 11:06:05

0

JOIN訂單並不重要,除非您在提示中明確提供FORCE ORDER

優化程序將選擇它認爲最合適的順序。

如果您在實際計劃中詢問連接順序,那麼是的,連接順序對於嵌套循環或散列連接而言絕對重要。

在嵌套循環的情況下,最裏面的表應該是較大的一個,最外面的應該是較小的一個。

在散列連接的情況下,探查表應該是較大的一個,散列的應該是較小的一個。