部分或過濾指數
SQL Server 和 SQLite 允許建立的索引不僅包含列的子集,還包含行的子集。
考慮到 order_state_id
等於 finished(2)
的訂單量不斷增長,以及啟動 order_state_id equal
的訂單數量穩定(1)。
如果你的企業使用這樣的查詢:
SELECT id, comment
FROM orders
WHERE order_state_id = 1
AND product_id = @some_value;
部分索引允許你限制索引,包括僅包括未完成的訂單:
CREATE INDEX Started_Orders
ON orders(product_id)
WHERE order_state_id = 1;
此索引將小於未過濾的索引,從而節省空間並降低更新索引的成本。