日期:2014-05-18  浏览次数:20589 次

视图查询超时问题
我有一个视图里面用了其他视图和函数.
前段时间查询一直没有发生超时问题,最近由于数据量增大,发生查询超时.
分析原因:
通过Query查询数据量不到1万,时间53秒
在客户端查询.我也修改了数据库工具,查询超时为1000秒测试,还是发生超时.

查询相关帖子,在表中增加了某些字段的索引,还是无法解决.
如果说是sql语句涉及到大量占用内存的查询,那么在Query查询为何没有问题?

不知道如何解决这个问题?

------解决方案--------------------
客户端查询有超时的问题
还是从索引上下功夫吧,多做尝试
------解决方案--------------------
,时间53秒Query查询还没问题吗,是不是考虑修改查询语句
------解决方案--------------------
视图里没有索引,也建不起来索引,所以建议LZ不要查视图,
可以联合查询表,也不要查视图.
------解决方案--------------------
没有索引你查起来会很慢的
------解决方案--------------------
对,直接组织SQL语句进行联合查询,不要select * from view where ……的形式,因为那样根本就提高效率,你试着把联合查询语句放到性能调整工具中,如2005的数据库引擎优化顾问,会给你提出相对于这个查询的结构调整建议,从而建立索引等等,会有较大的提高查询性能。

视图嵌套层数不能太多《3层,否则SQL语句在执行时不会有较好的优化效果
------解决方案--------------------
建议:
--尽量不要在view的基础上再建view
--尽量不用函数,用子查询代替
--在关键field上建index
--把旧的数据先排除
--可以用temp table提速(多个查询时可以把结果先放到temp table中)
------解决方案--------------------
--只取需要的那些field
--在exists 中尽量用select 1 返回
--在条件中尽量不要用 like,field尽量不要参与计算