2012-03-29 124 views
1

有沒有可能像以下那樣加速SQL查詢?加入加速SQL查詢和類似

SELECT.... 
FROM A, B, C 
WHERE 
A.a = B.a AND 
B.b like '%'+C.a+'%' 
+0

如果A,B,C之間有關係,你最好使用Inner Join – 2012-03-29 14:43:00

+0

@MassimilianoPeluso這已經是內連接了。它不是最理想的語法,但你認爲這是一個外連接? – 2012-03-29 14:53:14

+0

你可以在B.b和C.a中顯示一些數據的例子嗎? A.a,B.a或B.b還有索引嗎?什麼部分的操作很慢?你看過執行計劃嗎? – 2012-03-29 14:58:33

回答

1
  • 儘量避免 '喜歡'。

  • 用戶內部加入。

  • 表Aa和巴

    SELECT ... 
    FROM A INNER JOIN B 
    ON A.a = B.a 
    INNER JOIN C 
    ON B.b LIKE '%'+C.a+'%' 
    
+0

爲什麼'B.a = C.a'?我認爲你已經顯着地改變了這個查詢的語義... – 2012-03-29 14:52:44

+1

B.a = C.a?這是錯誤的! – 2012-03-29 14:53:31

1

創建索引雖然我更願意看到這種語法(因爲它是不太可能在不經意間導致交叉聯接):

SELECT A.a, B.a, B.b, C.a 
    FROM A 
    INNER JOIN B 
    ON A.a = B.a 
    INNER JOIN C 
    ON B.b LIKE '%' + C.a + '%'; 

如果此查詢的昂貴部分是LIKE操作,那麼您可以做的事情並不多,因爲此特定模式每次都需要掃描。你能在B.b和C.a中顯示一些數據的例子嗎? A.a,B.a或B.b還有索引嗎?