1. 程式人生 > >SQL Server基礎優化

SQL Server基礎優化

沒有 where 區別 如果 查找 where條件 操作符 順序 性能

1.先過濾簡單且能篩選大部分數據出去的條件;

2.只查詢有用的數據

不返回自己不需要的列,盡量不要使用select *;

不要返回自己不需要的行,盡量使用where條件來過濾自己需要的內容;

考慮使用top;

考慮使用分頁;

對於聚合查詢,可以用having子句進行進一步的過濾;

3.禁用隱式轉化

類型匹配,特別是字符型和數值型;

varchar類型和nvarchar類型也是隱式轉化,容易忽略;

4.union all 優於 union

列是相同的,包括列的類型、列的順序、列的數量;

區別:union是在union all的基礎上,刪除重復的記錄;

如果允許重復的記錄或者查詢除的數據本身沒有重復記錄,請使用union all;

union有默認排序;

UNION在進行表鏈接後會篩選掉重復的記錄,所以在表鏈接後會對所產生的結果集進行排序運算,刪除重復的記錄再返回結果;

UNION ALL只是簡單的將兩個結果合並後就返回;

5.避免重復的SQL操作

避免同一SQL語句多次執行,控制不必要的邏輯;

6.Like操作符

明確左側內容時,左側不應使用“%”通配;

左側使用“%”通配,不會執行索引查找,造成性能問題;

7.避免對索引字段使用運算或者函數表達式

8.空、空格、null

‘’‘與’ ‘相同,與null不同;

’<>‘是查詢不出null值的;

SQL Server基礎優化