簡體   English   中英

在哪種情況下不能使用臨時表重寫INNER JOIN(SELECT ...

[英]In which cases can INNER JOIN (SELECT … not be rewritten using temp table

我正在使用GridSQL,每當SQL模式INNER JOIN(出現SELECT時,我都會遇到一些性能問題。因此,我正在考慮將所有這些查詢重寫為兩個查詢,一個使用精確的select語句創建一個臨時表,另一個查詢與臨時表連接表,因此模式將改為INNER JOIN temp_table(...)。

在什么情況下不行? 您可能會懷疑,我希望對此問題沒有任何答案。 ;)

子選擇唯一無法輕易拆分為臨時表的時間是它引用外部表中的字段時。

對於“ ... INNER JOIN(SELECT ...)”,我懷疑您是否會遇到該問題(或者,即使有可能,我也不記得嘗試過此問題),因為您應該只引用第一個表中的字段連接條件。

我認為臨時表不會加快您的查詢速度! 相反,您應該優化查詢。 您可以做的事情:

  • 在將記錄與其他記錄集進行內部聯接之前對其進行過濾
  • 定義適當的索引

-Pavel

在哪種情況下不能使用臨時表重寫INNER JOIN(SELECT ...

如果用臨時表替換的查詢會導致龐大的結果集,那么我將避免使用臨時表。 產生它的開銷將抵消任何可能的收益。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM