用sql 查询只用了1秒,把sql创建成视图加上同样的条件查询出来结果需要5秒,数据库sql server 2012。多表查询,用了left join 和join 。
一、方式不同
1、sql查询:不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统。
2、视图查询:视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表。
二、特点不同
1、sql查询:相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
2、视图查询:视图是从一个特定的角度来查看数据库中的数据。从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表。
三、功能不同
1、sql查询:对基本表和视图的数据插入、删除和修改,特别是具有很强的数据查询功能。
2、视图查询:视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。
参考资料来源:百度百科-视图sql
参考资料来源:百度百科-结构化查询语言
有解决方案吗
追答把视图的代码 贴进括号里面
select t.*
(select * a,b on .....) as t
where t.>
这样就行了.
你应该是 查出数据需要再赛选一下对吧.
对,用sql直接筛选1秒就查询出来了,视图加上条件要5秒。你这个方法还是不行。要是可以创建视图索引应该可以,不过我这有几个表关联,没创建过。
追答贴代码吧.
本回答被提问者采纳没有解决方案吗
追答什么解决方案?性能损失方面的解决方案?
如果是性能损失方面的解决方案,没有。
也可以说有,就是对视图的查询语句进行优化。
通常来说直接查询和查询视图是没有什么区别的(sql 本身会进行优化),除非是视图嵌套了视图,像你这样相差了这么大,我想一定是查询语句有问题(猜的)