2013-12-07 104 views
2

我目前正在單個服務器上構建一個網站。數據庫開始增長將近半個tera。我不知道我怎麼會加快SQL查詢,特別是在加入請求...SQL JOIN,優化

其實我看到,當我做了

SELECT * FROM table LEFT JOIN pofile on profile.id=table.id WHERE uid=useruid 

表和外形都大表(超過5百萬的投入)。但我不知道如何執行聯合和如何優化,因爲在我的情況下,如果我第一次選擇配置文件uid = useruid我只有一百行和其他條件減少表到一千行,所以聯接應該是快速的,但不似乎是這種情況,因爲加入請求需要大約一秒鐘,並且where子句ID,UID是表中的索引。

有沒有一種方法來優化SQL連接?

+0

而你的數據庫引擎是(SQL查詢優化的全部藝術取決於數據庫引擎及其版本)?你能否顯示確切的索引定義? –

回答

1

當然。整個行業都是這樣做的。

您應該閱讀關於解釋計劃和索引。有時候,你可以達到1000%或更高的速度(當然取決於數據庫的當前狀態)。

+0

關於你的答案,但我認爲這不是一個答案,因爲它太籠統了。 –

+1

它指出瞭解決這個問題應該採取的方向(以及相關問題)。這比在計劃中玩耍更有意義。你需要相當一般的知識,在這種情況下沒有直接的答案。 –

0

您可以使用索引視圖。由於有連接表的平衡樹,這會提高你的表現。

0

它的醜陋取決於數據庫引擎。在你的查詢的情況下,這是否更好地工作:

WITH t AS (
SELECT 
    * 
FROM 
    table 
WHERE uid=useruid 
) 
SELECT 
    * 
FROM 
    t 
    LEFT JOIN 
    profile 
    ON 
    profile.id = t.id 
+0

嗡嗡聲我正在選擇...在選擇之前,但它是更長。將嘗試這一個! – user1998000