Foxtable(狐表)用户栏目专家坐堂 → union多个表存储过程是否比视图更快?


  共有4457人关注过本帖树形打印复制链接

主题:union多个表存储过程是否比视图更快?

帅哥哟,离线,有人找我吗?
jspta
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/8/20 14:57:00 [显示全部帖子]

以下是引用zpx_2012在2014-8-20 11:24:00的发言:
产品的出入库明细是从SQL2005数据库中的视图查询得到,该视图是由十几张结构类似的出入库单据比如销售出库单,外协出库单,生产领料单等union在一起的,数据多时从这个视图中查询越来越慢,是不是用样的union语句如果是改写在存储过程中,查询时用command从储存过程返回的结果表中取数这样效率更高?因为出入库的查询用户使用频率较高。
这个你使用存储过程或者表函数,带上参数,可以一定上加快速度。还有就是加载数量少也可以快很多。


 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/8/20 17:28:00 [显示全部帖子]

以下是引用zpx_2012在2014-8-20 16:33:00的发言:
谢谢老师们,因为很多查询条件都是开放给用户可以灵活设置的,所以查询列不固定,不好建立索引。看网上有人说储存过程中union多表查询比视图快,故才有此一问。
那你这种就是用存储过程动态合成SQL语句,效率上比直接用视图要好,特别当几个表数据量都数万行之后,效率很明显有提升


 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/8/20 17:43:00 [显示全部帖子]

FROM dbo.采购入库单 AS a INNER JOIN dbo.采购入库明细 AS b ON a.入库单号 = b.入库单号
改成:
FROM (select * from dbo.采购入库单 where 条件) AS a INNER JOIN dbo.采购入库明细 AS b ON a.入库单号 = b.入库单号
如果有不够条件的字段,那只能改成
FROM dbo.采购入库单 AS a INNER JOIN dbo.采购入库明细 AS b ON a.入库单号 = b.入库单号
where 条件
union All
.....

这个必须用存储过程动态完成了。

 回到顶部