前言:
提到資料庫存取,大多會擔心撰寫的statement是否有效能問題,
雖然公司可能會有DBA來review開發人員的statement,
但開發人員仍需初步判斷所寫的statement執行的狀況。
以SQL Server來說,會使用SSMS(SQL Server Management Studio)裡的執行計畫(Execution plan)來判斷。
作法:
可以準備幾個要比較statement來跑執行計畫,一般會先看是否有吃到index,
效能通常是:index seek > index scan
但如果SELECT的資料筆數接近整張table的筆數,SQL Server就可能採table scan將資料回傳。
基本上使用PK來當條件,就會套用cluster index seek。cluster index預設是從table的PK建出來的,每張table只會有一組,如下圖OrderID是[Orders]的唯一PK。
to be continued...
參考資料:
https://docs.microsoft.com/zh-tw/sql/relational-databases/sql-server-index-design-guide?view=sql-server-ver15
https://docs.microsoft.com/zh-tw/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-ver15
https://github.com/Microsoft/sql-server-samples/tree/master/samples/databases/northwind-pubs