2016-11-25 42 views
0

我有md_members表超過15,00,000行...要獲得更好的性能 - 加入關鍵字查詢/加入關鍵字/不加入關鍵字...哪一個更好加入關鍵字或沒有加入此查詢的關鍵字

Select 
    mem_fname 
    ,mem_lname 
    ,mem_mobile 
    ,mem_email 
    ,wda_first_login 
    ,a.updated_on as wda_last_login 
From wda_article_log as a,md_members as b 
where b.mem_id=a.mem_id and a.article_type=1 and b.wda_status=1` 
+0

你看過MySQL解釋命令的返回值嗎? – Fang

+0

不知道我的sql如何運行,但有人告訴我MS Sql對於這樣的查詢使用內部連接創建執行計劃。但是明確地提供內部連接可以確保它正在使用連接並使其更具可讀性。 –

+0

我想你會得到最好的性能與一個很好的索引(至少在兩個表中的mem_id - 如果不是主鍵 - 甚至可能article_type和/或wda_status) – Seb

回答

2

明確的inner join和逗號語法在性能方面是等價的。您可以檢查兩個版本的輸出explain,它們將產生相同的查詢計劃。

這些操作符的優先級有所不同,所以如果將它們混合使用,可能會有一些令人討厭的驚喜,但在問題的查詢中並非如此。

使用明確的inner join而不是隱式的原因是代碼的可讀性更好,因爲連接條件和過濾條件是相互分離的。

+0

謝謝.. @ Shadow – arun