部分或过滤指数
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;
此索引将小于未过滤的索引,从而节省空间并降低更新索引的成本。