使用
JOIN
(在
FROM
子句中) 在查詢中納入資料表,而不是在
WHERE
子句的子查詢中。即使您只需要篩選資料表的資料 (而不需要取得結果集),也可使用此祕訣。
在
FROM
子句中加入多個資料表會比在
WHERE
子句中使用子查詢來得快。
請避免無法充分利用索引的 SQL 陳述式。這些陳述式包括使用子查詢中的彙總函數、子查詢中的
UNION
陳述式,或是搭配
UNION
陳述式的
ORDER BY
子句。
索引可大幅提升處理
SELECT
查詢的速度。不過,有些 SQL 語法會阻止資料庫使用索引,強制資料庫使用實際資料來進行搜尋或排序作業。
請考慮避免使用
LIKE
運算子,尤其是前置萬用字元,如
LIKE('%XXXX%')
。
因為
LIKE
作業支援使用萬用字元進行搜尋,所以執行速度會比使用完全比對的比較方式來得慢。特別是,如果您的搜尋字串是以萬用字元開頭,資料庫在搜尋中將完全無法使用索引。資料庫必須改為搜尋資料表中每列的全文。
請考慮避免使用
IN
運算子。如果預先知道可能的值,可以使用
AND
或
OR
來撰寫
IN
作業,讓執行更快速。
在下列兩個陳述式中,第二個的執行速度較快。執行速度較快的原因是,該陳述式結合
OR
來使用簡單的相等運算式,而不是使用
IN()
或
NOT IN()
陳述式:
-- Slower
SELECT lastName, firstName, salary
FROM main.employees
WHERE salary IN (2000, 2500)
-- Faster
SELECT lastName, firstName, salary
FROM main.employees
WHERE salary = 2000
OR salary = 2500
請考慮改用 SQL 陳述式的替代格式來提升效能。
如先前的範例所示,SQL 陳述式的撰寫方式也會影響資料庫效能。通常您可以使用多種方式來撰寫 SQL
SELECT
陳述式以擷取特定結果集。在某些情況下,某種方法的執行速度會明顯快於另一種方法。除了前述建議之外,您可以從 SQL 語言專屬的資源來瞭解不同 SQL 陳述式與效能的詳細資訊。
|
|
|