千家信息网

怎么使用WITH AS提高性能

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关怎么使用WITH AS提高性能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如何使用WITH AS提高性能1. 案例起因公司门店应用程序
千家信息网最后更新 2026年10月31日怎么使用WITH AS提高性能

这篇文章将为大家详细讲解有关怎么使用WITH AS提高性能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

  如何使用WITH AS提高性能

  1. 案例起因

  公司门店应用程序每天都要出一份报表,用来统计所有商品当天的期初库存数量、入库数量、出库数量

  及当天的期末库存数量。运行半年以后,这份报表运行越来越慢,到现在,每次运行该报表显示当天数据时需要近20秒的时间。于是开发人员找到我,希望我看看,是不是可以使该报表运行的时间更短。

  该报表就是一段SQL语句,主要由三部分组成,第一部分是计算每个商品的期初数量,第二部分是计算每个商品的当天发生(包括入库和出库的)数量,第三部分是计算每个商品的期末数量,也就是当天的余额。每个部分使用UNION ALL连接起来。

  我看到该报表,第一个感觉就是这段SQL里的每个部分都要对表进行扫描,明显成本过高。应该可以使用WITH AS进行改写。

  2. WITH AS的含义

  WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。

  特别对于UNION ALL比较有用。因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用WITH AS短语,则只要执行一遍即可。如果WITH AS短语所定义的表名被调用两次以上,则优化器会自动将WITH AS短语所获取的数据放入一个TEMP表里,如果只是被调用一次,则不会。而提示materialize则是强制将WITH AS短语里的数据放入一个全局临时表里。很多查询通过这种方法都可以提高速度。

关于"怎么使用WITH AS提高性能"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

部分 数量 短语 商品 数据 运行 性能 篇文章 语句 就是 库存 成本 报表 时间 更多 片断 表里 查询 不同 不错 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技创新与互联网经济 智能科技公司是互联网公司吗 科技信息互联网 银优互联网科技有限公司 电子科技大学互联网 互联网科技logo 互联网科技公司介绍 互联网公司会议桌创意科技软装饰 北京三清互联网科技 深圳国际航运科技和互联网 互联网科技实习生岗位职责 福州新华互联网科技学校 知乎 金融科技与互联网金融相同和不同 厦门比较好的科技互联网公司 移动互联网年度科技创新 三亚科技创新互联网基地 盐城市攀科互联网科技有限公司 互联网科技创新创业项目 互联网领先科技成果宣传视频 网互联网络科技 互联网属科技 天速互联网络科技有限公司 深圳国际航运科技和互联网 宁夏科技产业互联网案例 互联网软件和科技 呼和浩特新华互联网科技学院 畅思互联网科技 长沙互联网科技 广东鹅鹅鹅互联网科技有限公司 米泉互联网科技专业怎么样
0