SQL Server 索引与并发编程全解析
1. 索引视图的使用与限制
在使用索引视图时,有一些重要的限制条件需要考虑:
- 引用其他视图。
- 引用非确定性函数。
- 引用数据库外的数据。
- 引用不同所有者拥有的表。
虽然这些规则看起来很严格,但它们是有原因的。维护索引视图类似于编写自己的非规范化数据维护函数。简单来说,构建非规范化数据的查询越复杂,维护它的复杂性就越高。向基表中添加一行可能会导致视图需要重新计算,涉及数千行数据。
索引视图在运行成本高但基础数据变化不大的视图中特别有用。例如,在决策支持系统中,每天加载一次数据。维护索引或重建索引会有开销,但如果能在非工作时间构建索引,就可以避免每次使用视图时重新进行连接和计算的成本。
替代方法
如果索引视图在某些情况下不适用,可以考虑将数据结果插入到永久表中。例如,对于示例查询,可以创建一个包含三列(productNumber、totalSales 和 countSales)的表,然后执行 INSERT INTO ProductAverageSales SELECT...
将查询结果放入该表中。任何查询都可以这样做,而不仅仅是符合严格准则的查询。虽然这对不直接查询表中数据的临时用户没有帮助,但肯定能提高直接访问数据的查询性能。
2. 索引创建的最佳实践
索引是一个复杂的主题,以下是创建新数据库解决方案时的一些最佳实践:
1. 测试后添加索引 :除非必要,否则不要随意向表中添加非约束索引来提高性能。在许多情况下,不添加索引也