我熟悉 SQL Server 索引视图(或 Oracle 物化视图),我们在 OLAP 应用程序中使用它们。它们具有非常酷的功能,即能够篡改执行计划并将其重新映射到索引视图而无需更改现有代码。
IE。假设我有一个非常昂贵的连接 SPROC。
SELECT [SOME COLUMNS]
FROM Table1 INNER JOIN Table2 [DETAILS]
INNER JOIN Table3 [BUNCH MORE JOINS] ...
如果我创建了一个包含类似结果集的索引视图,那么查询优化器很可能会将 SPROC 发送到我的索引视图,而不是基表,我会获得很大的性能提升。
现在说我想在OLTP 中使用索引视图!?我的意思是大多数 OLTP(比如这个站点)的阅读量相对较大,如果它们的连接成本很高,那么我们可以加快它们的速度并可能减少锁定争用(http://www.codinghorror.com/blog/archives/001166.html)。更好的是您不必更改任何代码,只需编写索引视图。
但这也意味着数据库变得更大,因为我们需要在索引视图中保留这些数据的副本......
有没有人使用过索引视图来解决 OLTP 中的争用或速度问题?我怎么从来没见过这个用的?