sql 多表和视图混用建的视图,如何提高执行效率
近来遇到这样一个问题,我建立了一个拥有8个基础表和一个视图(这个视图是由两个字段完全相同的表直接累加合并的)的视图,这个大视图里拥有14万左右条数据,我测试了一下,直接select * from 此大视图 执行需要40秒左右(额滴神啊)。这仅仅是查询,而我要做的操作是从这么多数据中选出插入时间在某个时间之后的数据,然后将选出的数据写入到另一个表中,这样一系列操作结束之后,大概需要1分半,这个时间也忒长了吧。而且有时候在那个时间之后没有插入数据,也就是不需要转移数据,可它仍然得执行一分钟左右,这也忒坑爹了呀!
各位路过的大神,帮小弟解决一下吧,我是真无语了! sql?视图??效率低??提高?多表建立
[解决办法]
就是索引视图了
参考
[解决办法]
执行计划看过吗?
[解决办法]
比如视图里使用了表A,然后你在外面又使用了表A和这个视图关联,就会导致一些问题的出现。
[解决办法]
这个大视图里拥有14万左右条数据,我测试了一下,直接select * from 此大视图 执行需要40秒左右(额滴神啊)。
---把执行计划分析下,看哪个执行操作开销cost最大,然后通过索引优化之,以cost最小去获取数据
---如果优化过了,可以给视图加上索引,索引视图能够提升性能
[解决办法]
先看看执行计划(ctrl+M 然后运行你的语句,就会出现执行计划)中百分比较高的部分,定位问题,如果select * from xxx,通常索引都是没什么用的,另外你能告诉我用视图的理由吗?
回复请引用,谢谢
[解决办法]