关于SQL语句优化的一个问题
今天写了一个很简单的存储过程,结果一执行,40多秒,后来调整了一句话写法,瞬间出来,其实差别不大,如下:
select item_no=vpc.ITEM_ID
,BL_QTY=sum(vpc.QTY_CONTRACT-vpc.QTY_Shipped)
,QTY_Dis=sum(vpc.QTY_Distributed-vpc.QTY_Shipped)
,QTY_Avail=sum(vpc.QTY_CONTRACT-vpc.QTY_Distributed)
from TUC_V_PC_Line_Status vpc
where
isnull((select QTY_Avail from EX_ITEM_INV where item_no=vpc.item_ID and Whse='CN'),0)<0
and ITEM_ID=case when isnull(@Item,'')='' then ITEM_ID else @Item end
and CUST_ID=case when isnull(@Vendor,'')='' then CUST_ID else @Vendor end
group by vpc.ITEM_ID
测试时间40s左右
改成如下,测试时间1s之内完成
select item_no=vpc.ITEM_ID
,BL_QTY=sum(vpc.QTY_CONTRACT-vpc.QTY_Shipped)
,QTY_Dis=sum(vpc.QTY_Distributed-vpc.QTY_Shipped)
,QTY_Avail=sum(vpc.QTY_CONTRACT-vpc.QTY_Distributed)
from TUC_V_PC_Line_Status vpc
left join EX_ITEM_INV INV on INV.item_no=vpc.item_ID and INV.Whse='CN'
where
isnull(INV.QTY_Avail,0)<0
and ITEM_ID=case when isnull(@Item,'')='' then ITEM_ID else @Item end
and CUST_ID=case when isnull(@Vendor,'')='' then CUST_ID else @Vendor end
group by vpc.ITEM_ID
上述的视图TUC_V_PC_Line_Status中仅仅只有4377条记录,EX_ITEM_INV中约40000条记录,时间上就可以差别这么多。
关于SQL语句优化的一个问题的更多相关文章
- sql语句优化SQL Server
MS SQL Server查询优化方法查询速度慢的原因很多,常见如下几种 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了 ...
- 优化数据库的方法及SQL语句优化的原则
优化数据库的方法: 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化.(可以用Sybase的SQL Expert,可惜 ...
- 整理:sql语句优化之SQL Server
. 增加服务器CPU个数;但是必须明白并行处理串行处理更需要资源例如内存.使用并行还是串行程是MsSQL自动评估选择的.单个任务分解成多个任务,就可 以在处理器上运行.例如耽搁查询的排序.连接.扫描和 ...
- oracle之sql语句优化
oracle之sql语句优化 sql语句的优化 1.在where子句中使用 is null 或 is not null 时,oracle优化器就不能使用索引了. 2.对于有连接的列,即使最有一个是静态 ...
- 数据库 基于索引的SQL语句优化之降龙十八掌(转)
一篇挺不错的关于SQL语句优化的文章,因不知原始出处,故未作引用说明! 1 前言 客服业务受到SQL语句的影响非常大,在规模比较大的局点,往往因为一个小的SQL语句不够优化,导致数据库性能急 ...
- 数据库的优化(表优化和sql语句优化)
在这里主要是分为表设计优化和sql语句优化两方面来实现. 首先的是表设计优化: 1.数据行的长度不要超过8020字节.如果是超过这个长度的话这条数据会占用两行,减低查询的效率. 2.能用数字类型就不要 ...
- MySQL常用SQL语句优化
推荐阅读这篇博文,索引说的非常详细到位:http://blog.linezing.com/?p=798#nav-3-2 在数据库日常维护中,最常做的事情就是SQL语句优化,因为这个才是影响性能的最主要 ...
- 浅谈mysql配置优化和sql语句优化【转】
做优化,我在这里引用淘宝系统分析师蒋江伟的一句话:只有勇于承担,才能让人有勇气,有承担自己的错误的勇气.有承担错误的勇气,就有去做事得勇气.无论做什么事,只要是对的,就要去做,勇敢去做.出了错误,承担 ...
- sql语句优化总结
sql语句优化总结 数据库优化的几个原则: 1.尽量避免在列上做运算,这样会导致索引失败: 2.使用join是应该用小结果集驱动大结果集,同时把复杂的join查询拆分成多个query.不然join的越 ...
随机推荐
- 4.mybatis属性和表的列名不相同时的处理方法
/** * 属性和表的列名不相同时的处理方法 * 1.sql中给列重新命名: * select tid id, tname name from teacher t where tid=#{id} * ...
- \n ^ \t的使用
\n是换行符: 使用时需要放在字符串里面,成为字符串的一部分(不要嫌乱,这是我之前犯的错误). 示例: >>>print("I am Guido \n what's yon ...
- HDU1045 Fire Net(DFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1045 Fire Net Time Limit: 2000/1000 MS (Java/Others) ...
- iOS - OC PList 数据存储
前言 直接将数据写在代码里面,不是一种合理的做法.如果数据经常改,就要经常翻开对应的代码进行修改,造成代码扩展性低.因此,可以考虑将经常变的数据放在文件中进行存储,程序启动后从文件中读取最新的数据.如 ...
- 02 key concept
本章提要-------------------------------------术语, 选择性与基数, 软解析与硬解析, 绑定变量, 扩展的游标共享SQL语句生命周期, 特别关注解析部分------ ...
- thinkphp自动验证方法的使用
建一个表单: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- pl/sql developer执行光标所在行
一.发现问题 需要执行某一行语句时,需要选中该行语句,点击F8才行. 二.解决问题 中文版:工具->首选项->SQL窗口->自动选择语句 英文版:tools->preferen ...
- C#_数据库连接串的配置
数据库的连接串 数据库连接字符串的拼写规则的决定条件: 连接的数据库的类型:SQL Server,Oracle,MySQL,Acess,MogoDB,Visual FoxPro(dBASE),Exce ...
- Linux定时任务Crontab详解_定时备份
文章来源:http://blog.chinaunix.net/uid-7552018-id-182133.html 今天做了个数据库的备份脚本,顺便系统得学习一下Linux下定时执行脚本的设置.Lin ...
- easyui-datebox 只显示年月
$(function () { $('#niandu').datebox({ onShowPanel: function () {//显示日趋选择对象后再触发弹出月份层的事件,初始化时没有生成月份层 ...