千家信息网

怎么使用WITH AS提高性能

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章将为大家详细讲解有关怎么使用WITH AS提高性能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如何使用WITH AS提高性能1. 案例起因公司门店应用程序
千家信息网最后更新 2025年02月23日怎么使用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安全错误 数据库的锁怎样保障安全 数据库文件自动增长是什么意思 青海网络安全保护制度 店群系统软件开发 上海海航计算机网络技术服务行业 网络安全考博自述书 宇硕科技软件开发有限公司 医院住院信息数据库实例 福建常见软件开发价格对比 天津静海网络安全 微信聊天记录从服务器 戴尔服务器更改启动引导 港澳台硕博论文数据库是什么 软件开发周期的模型 无锡可视化智慧工地软件开发 山东省济南市戴尔服务器代理商 h5 按钮发送数据库 网络安全好书推荐 大学生网络安全演讲稿200 来电信息数据库无法更新 数据库取最大值函数 丰台科技园互联网企业目录 数据库文件自动增长是什么意思 中国最好的电脑网络安全软件 笔记本电脑wifi网络安全 如何快速导入数据库数据库表 广州拓扑网络技术有限公司品牌 山东省济南市戴尔服务器代理商 吉林会计软件开发资格 tp5数据库更新语句 郑州公众号软件开发
0