SQL 中的索引用於提高資料庫查詢的效能,讓資料庫無需掃描表中的每一行即可快速找到資料。聚集索引和非聚集索引是兩種主要類型,它們在結構和用途上有顯著差異。
定義:
聚集索引決定表中資料的物理順序。表的行以與索引相同的順序儲存。
特徵:
優點:
缺點:
範例:
CREATE CLUSTERED INDEX idx_employee_id ON Employees(EmployeeID);
在這種情況下,EmployeeID 欄位決定了Employees 表中行的物理順序。
定義:
非聚集索引從表格資料建立一個單獨的結構,其中包含指向資料物理位置的指標。
特徵:
優點:
缺點:
範例:
CREATE CLUSTERED INDEX idx_employee_id ON Employees(EmployeeID);
這會在 LastName 欄位上建立索引,而不會改變行的實體順序。
Feature | Clustered Index | Non-Clustered Index |
---|---|---|
Physical Order | Matches index order | Independent of index order |
Data Storage | Data and index are stored together | Data and index are stored separately |
Quantity Per Table | One per table | Multiple allowed |
Use Case | Range queries, sorting | Filtering or searching by specific values |
Performance | Faster for range scans | Faster for point queries |
Impact on Writes | Higher impact | Lower impact |
非聚集索引:非常適合在 WHERE、JOIN 或過濾操作中經常使用的列,特別是當表已經有聚集索引時。
以上是聚集索引與非聚集索引:資料庫最佳化的主要區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!