我的数据库中有大约200多个表。每个表都有两列IsDeleted,IsActive其类型BIT用于逻辑删除。在所有查询中,我检查是否未删除行,IsDeleted = 0并且IsActive = 1。
IsDeleted
IsActive
BIT
IsDeleted = 0
IsActive = 1
我的问题是:如何创建索引以获得最佳性能?
这是添加过滤索引的主要方案之一。在这种情况下,筛选索引允许您创建不包括已删除或非活动行的索引,从而使索引更小且查询更快。
替代方法是将状态列作为键列添加到所有索引,或者使用分区或单独的存档表。而且它们都不如过滤索引那么简单。