SQL调优(SQL TUNING)之远程支持完成性能大幅优化
前几天,一个朋友找到我,说一个SQL性能有问题,看看能不能优化,下面为过程:
雪豹 9:35:10
在吗
兰花岛主 15:07:39
忙忘了,有事儿?
雪豹 15:07:49
嗯
雪豹 15:07:54
数据库优化问题
兰花岛主 15:08:04
哦,你说。
雪豹 15:09:09
select distincta.suite_no,b.bd_nm,b.crt_date from (select suite_no from all_suite where cus_id =1)a left join
(select b.suite_no,b.bd_nm,b.crt_date from building b,customer c where c.cus_no=b.cus_no
and c.cus_serial='75806001113513'and b.back_date is null ) b on b.suite_no=a.suite_no;
雪豹 15:09:35
雪豹 15:09:58
如果数据在千万级别时候 会很慢
雪豹 15:10:35
有没有更好写法那
兰花岛主 15:10:58
哪个是千万级啊?
雪豹 15:11:10
building表
兰花岛主 15:11:25
customer呢?
雪豹 15:11:26
clustomer表很小
雪豹 15:11:36
在万条数据
雪豹 15:12:00
All_suite 这个表也是几万条数据
兰花岛主 15:13:38
你这个building表上的索引呢?
兰花岛主 15:13:40
我看看?
雪豹 15:15:10
building_idx1(bd_nm,area_id,cus_no,back_date,suite_no)
building_idx2(crt_date)
building_idx3(back_date)
building_pkey(sid)
雪豹 15:16:27
building的索引是否可以在优化一下
兰花岛主 15:16:36
这个列的选择性怎么样?
兰花岛主 15:16:48
也就是重复值多不?
雪豹 15:17:12
crt_date 不多
兰花岛主 15:17:42
不是这个,cus_serial
雪豹 15:17:57
area_id, cus_id, suite_no 这个几个重复值多
雪豹 15:18:27
这个没有重复
雪豹 15:18:30
都是唯一的
雪豹 15:18:44
这个是customer的表里吗
雪豹 15:18:48
他不是索引
兰花岛主 15:19:17
最终结果多少?
雪豹 15:19:37
查询出来数据吗
兰花岛主 15:19:51
对,结果集。
雪豹 15:21:22
每一个cus_serial 查询所有对应的all_suite所有房间 对应最后入住人员
雪豹 15:21:52
这个房间个数不会多
兰花岛主 15:22:29
一个cum_serial大概对应多少个customer?
兰花岛主 15:23:38
大概?
雪豹 15:23:57
一对一
兰花岛主 15:24:21
一个cus_serial对应一个customer?
兰花岛主 15:25:38
building_idx1这个索引列太多了。
雪豹 15:26:02
可以删除
雪豹 15:26:37
保留几个索引
兰花岛主 15:26:54
不用,单独在cus_no上建个索引吧。
兰花岛主 15:27:03
现在多久出结果?
雪豹 15:28:01
30s左右
兰花岛主 15:28:12
嗯。
兰花岛主 15:28:39
按照我说的见个索引吧,估计不会超过1s
兰花岛主 15:28:44
建。
雪豹 15:29:10
ok
兰花岛主 15:29:16
这样的话,你这个sql优化的空间还是比较大的。
兰花岛主 15:29:48
应该在最多几百ms出结果。
兰花岛主 15:29:53
优化好了的话。
雪豹 15:32:57
是的
雪豹 15:33:04
0.5秒
雪豹 15:33:22
比以前快了
兰花岛主 15:34:11
你刚才这个0.5s,是按照我说的方法建索引后的吗?
雪豹 15:34:25
建索引后
雪豹 15:34:37
是的
兰花岛主 15:34:51
哦。
兰花岛主 15:35:12
其他,不太了解你那边数据的情况,不太好精细优化。
兰花岛主 15:35:44
应该还能快。
雪豹 15:36:34
好的
雪豹 15:36:36
我看看
兰花岛主 15:37:16
比如:另外两个表的索引
雪豹 15:37:31
嗯
兰花岛主 15:37:43
那个全表扫描,虽然表小,但对 0.5s,应该也是不小的比例。
雪豹 15:37:55
明白了
兰花岛主 15:38:04
对吧。
雪豹 15:41:30
优化到0.18秒了
雪豹 15:44:52
0.07秒
兰花岛主 15:45:00
All_suite?
兰花岛主 15:45:07
嗯,这就差不多了。
兰花岛主 15:45:20
几十ms
雪豹 15:45:28
All_suite suit_no 做成索引了
雪豹 15:45:40
这回差不多了
兰花岛主 15:45:44
嗯,差不多了。
至此,对方还算比较满意,性能也有了大幅提升,鉴于多方面因素,对以上图文进行了必要处理,记录于此,各位也可以多想想看,是否还有更优的办法或其他思路,共勉。
SQL调优(SQL TUNING)之远程支持完成性能大幅优化的更多相关文章
- SQL注入漏洞和SQL调优SQL注入漏洞和SQL调优
SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这 ...
- 十分钟释疑Oracle中“小表超慢”之谜(SQL调优/SQL优化)
前几天,一个用户找到我,说查一个小表的时候非常慢,我问有多慢,他说最快也得半个小时才能出结果,有时干脆不出结果,我说小表多大,他说就几十兆,有点疑惑,让他帮忙获取了相关信息,一看就明白了,原来所谓的小 ...
- Script:SQL调优健康检查脚本
Script:SQL调优健康检查脚本 http://www.askmaclean.com/archives/sql-tuning-health-check-script.html 以下脚本可以用于收集 ...
- Oracle中SQL调优(SQL TUNING)之最权威获取SQL执行计划大全
该文档为根据相关资料整理.总结而成,主要讲解Oracle数据库中,获取SQL语句执行计划的最权威.最正确的方法.步骤,此外,还详细说明了每种方法中可选项的意义及使用方法,以方便大家和自己日常工作中查阅 ...
- 11g新特性-自动sql调优(Automatic SQL Tuning)
11g新特性-自动sql调优(Automatic SQL Tuning) 在Oracle 10g中,引进了自动sql调优特性.此外,ADDM也会监控捕获高负载的sql语句. 在Oracle 11g中, ...
- 《高性能SQL调优精要与案例解析》一书谈主流关系库SQL调优(SQL TUNING或SQL优化)核心机制之——索引(index)
继<高性能SQL调优精要与案例解析>一书谈SQL调优(SQL TUNING或SQL优化),我们今天就谈谈各主流关系库中,占据SQL调优技术和工作半壁江山的.最重要的核心机制之一——索引(i ...
- 《高性能SQL调优精要与案例解析》一书谈SQL调优(SQL TUNING或SQL优化)学习
<高性能SQL调优精要与案例解析>一书上市发售以来,很多热心读者就该书内容及一些具体问题提出了疑问,因读者众多外加本人日常工作的繁忙 ,在这里就SQL调优学习进行讨论并对热点问题统一作答. ...
- 初次使用SQL调优建议工具--SQL Tuning Advisor
在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning Advisor :STA),它是新的DBMS_SQLTUNE包. 使用STA一定要保证优化器是CBO模式下 ...
- 记一次SQL调优/优化(SQL tuning)——性能大幅提升千倍以上
好久不写东西了,一直忙于各种杂事儿,恰巧昨天有个用户研发问到我一个SQL调优的问题,说性能太差,希望我能给调优下,最近有些懒,可能和最近太忙有关系,本来打算问问现在的情况,如果差不多就不调了,那哥们儿 ...
随机推荐
- mybatis 3的TypeHandler深入解析(及null值的处理)
最近,在测试迁移公司的交易客户端连接到自主研发的中间件时,调用DAO层时,发现有些参数并没有传递,而在mapper里面是通过parameterMap传递的,因为有些参数为null,这就导致了参数传递到 ...
- Linux进程间通信--使用信号量【转】
本文转载自:http://blog.csdn.net/ljianhui/article/details/10243617 这篇文章将讲述别一种进程间通信的机制——信号量.注意请不要把它与之前所说的信号 ...
- Linux环境下一些有用但不常见的命令
Linux环境下一些有用但不常见的命令 1.获取显卡硬件信息 lspci -vnn | grep VGA -A 12 (若是n卡,则用glxinfo) 2.执行*.sh文件 常见的执行*.sh文件当属 ...
- RHEL7使用NAT方式上网
1.首先,Windows7无法设置网络共享VMNet8的问题,是因为禁用了Firewall服务,设置为自动,启用即可:且需要启动VMWare的DHCP和NAT两个服务,这两个服务在我的机器上是关闭的, ...
- UVa 12563 劲歌金曲(0-1背包)
https://vjudge.net/problem/UVA-12563 题意: 在一定的时间内连续唱歌,最后一首唱11分钟18秒的劲歌金曲,问最多能长多长时间. 思路: 0-1背包问题,背包容量为t ...
- #使用ListView更新数据出现闪烁解决办法
//使用双缓冲:添加新类继承ListView 对其重写 public class DoubleBufferListView : ListView { public DoubleBufferListVi ...
- 智能边缘计算,让IoT有大智慧
丹棱君有话说:什么是智能边缘计算(Edge Computing)?别着急,它可是与你与我都有着千丝万缕的联系.物联网(IoT)的概念早已飞入寻常百姓家,在日常生活中的许多场景发挥着“智能”作用.比如, ...
- MongoDB(课时5 数据查询)
3.4.2 数据查询 对于数据的查询操作核心语法: db.集合名称.find({查询条件}, {设置显示的字段}) 范例:没查询条件 db.info.find() 范例:有查询条件,查询出url为&q ...
- MongoDB(课时3 MongoDB基本操作)
3.3 MongoDB的基本操作 在MongoDB数据库里面存在数据库的概念,但没有模式(所有的信息都是按照文档保存的),保存数据的结构是BSON结构,只不过在进行一些数据处理的时候才会使用到Mong ...
- windows与kali双系统安装基本教程
以前写过一篇在虚拟机中安装kali的基本教程的文章,那时候的kali还是1.0时代,现如今已经kali2.0了,在虚拟机中运行kali还是会受到性能的影响,所以还是装到自己电脑上跑起来最爽.当然如果你 ...