楼主: 草民的补丁

[笔记] sql改下优化

[复制链接]
论坛徽章:
33
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44复活蛋
日期:2013-02-16 21:33:062013年新春福章
日期:2013-02-25 14:51:24鲜花蛋
日期:2013-06-20 09:44:48夏利
日期:2013-09-23 08:54:16雪佛兰
日期:2013-12-08 09:36:44雪佛兰
日期:2014-01-29 16:16:21雪铁龙
日期:2014-02-14 14:49:362014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02
11#
发表于 2012-12-6 09:41 | 只看该作者
aeoluspu 发表于 2012-12-6 09:28
not exists 与not in 在效率方面没有太多差别吧 ?

你可以看看优化方面的建议
基本是不建议使用not in的

使用道具 举报

回复
论坛徽章:
7
2013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2013-06-19 15:06:24技术图书徽章
日期:2014-01-26 14:23:572014年新春福章
日期:2014-02-18 16:48:49马上加薪
日期:2014-02-18 16:48:49天蝎座
日期:2015-07-08 22:36:16水瓶座
日期:2016-01-20 11:23:23
12#
 楼主| 发表于 2012-12-6 09:58 | 只看该作者
xnk9499 发表于 2012-12-5 20:29
用not exists替换not in
is_drop 添加为索引

is_drop上有索引了,呵呵,not exists的话,效果和not in差不多,就是想把not in转换出去,因为使用的都是一张表中的数据。

使用道具 举报

回复
论坛徽章:
1
2013年新春福章
日期:2013-02-25 14:51:24
13#
发表于 2012-12-6 11:43 | 只看该作者
not in 优化都是优化为 left join ,如果感觉还是不行 ,那就看看 业务逻辑上是不是可以有优化的地方

使用道具 举报

回复
论坛徽章:
7
2013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2013-06-19 15:06:24技术图书徽章
日期:2014-01-26 14:23:572014年新春福章
日期:2014-02-18 16:48:49马上加薪
日期:2014-02-18 16:48:49天蝎座
日期:2015-07-08 22:36:16水瓶座
日期:2016-01-20 11:23:23
14#
 楼主| 发表于 2012-12-6 11:45 | 只看该作者
aeoluspu 发表于 2012-12-6 11:43
not in 优化都是优化为 left join ,如果感觉还是不行 ,那就看看 业务逻辑上是不是可以有优化的地方

嗯,呵呵

使用道具 举报

回复
论坛徽章:
2
2013年新春福章
日期:2013-02-25 14:51:24蜘蛛蛋
日期:2013-07-22 09:34:38
15#
发表于 2012-12-6 13:39 | 只看该作者
草民的补丁 发表于 2012-12-6 09:58
is_drop上有索引了,呵呵,not exists的话,效果和not in差不多,就是想把not in转换出去,因为使用的都是 ...

一点疑问:group by的作用没体现出来,

一、在t1中先进行 group by,减少t1的结果集数量
(SELECT t.gem_code FROM gem_picture t WHERE t.is_cover=1 AND t.is_drop=0 GROUP BY t.gem_code) AS t1

二、这样还不行的话,应该就和表中的数据分布有关了

满足t.is_drop=0 、t.is_cover=1 AND t.is_drop=0 这两个条件的数据量占全表数据量的比例比较高,即使is_drop=0有索引,也会进行全表扫描

可以反向考虑尝试下。
由于WHERE  k.is_drop=0这个条件是无法改变的,只能改变join的 t1结果集
LEFT OUTER JOIN (SELECT t.gem_code FROM gem_picture t
    WHERE t.is_drop!=0 or (t.is_cover!=1 AND t.is_drop=0)
) AS t1 ON k.gem_code=t1.gem_code
WHERE  k.is_drop=0 AND t1.gem_code IS NOT NULL

使用道具 举报

回复
论坛徽章:
7
2013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2013-06-19 15:06:24技术图书徽章
日期:2014-01-26 14:23:572014年新春福章
日期:2014-02-18 16:48:49马上加薪
日期:2014-02-18 16:48:49天蝎座
日期:2015-07-08 22:36:16水瓶座
日期:2016-01-20 11:23:23
16#
 楼主| 发表于 2012-12-6 14:02 | 只看该作者
本帖最后由 草民的补丁 于 2012-12-6 14:02 编辑
G8bao7 发表于 2012-12-6 13:39
一点疑问:group by的作用没体现出来,

一、在t1中先进行 group by,减少t1的结果集数量

嗯,谢谢兄弟拍砖,哈,这里估计主要是业务数据分布的问题,按照以上条件索取的话,耗时还是很多!以下是截图信息!

使用道具 举报

回复
论坛徽章:
7
2013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2013-06-19 15:06:24技术图书徽章
日期:2014-01-26 14:23:572014年新春福章
日期:2014-02-18 16:48:49马上加薪
日期:2014-02-18 16:48:49天蝎座
日期:2015-07-08 22:36:16水瓶座
日期:2016-01-20 11:23:23
17#
 楼主| 发表于 2012-12-6 14:13 | 只看该作者
草民的补丁 发表于 2012-12-6 14:02
嗯,谢谢兄弟拍砖,哈,这里估计主要是业务数据分布的问题,按照以上条件索取的话,耗时还是很多!以下是 ...

以下是我用profile的统计在正式上所得!可以看到Copying to tmp table,值比较大,现在数据量比较少,以后数据加大,估计会影响数据,优化不了,数据大了要做数据切割。NND!

使用道具 举报

回复
论坛徽章:
2
2013年新春福章
日期:2013-02-25 14:51:24蜘蛛蛋
日期:2013-07-22 09:34:38
18#
发表于 2012-12-6 14:31 | 只看该作者
草民的补丁 发表于 2012-12-6 14:13
以下是我用profile的统计在正式上所得!可以看到Copying to tmp table,值比较大,现在数据量比较少,以后 ...

最后的sorting占用比例也不小,group by 默认是进行排序的,如果不需要排序的话,最后可以加上 order by NULL

使用道具 举报

回复
论坛徽章:
2
2013年新春福章
日期:2013-02-25 14:51:24蜘蛛蛋
日期:2013-07-22 09:34:38
19#
发表于 2012-12-6 14:36 | 只看该作者
草民的补丁 发表于 2012-12-6 14:13
以下是我用profile的统计在正式上所得!可以看到Copying to tmp table,值比较大,现在数据量比较少,以后 ...

还有,关于这点
一、在t1中先进行 group by,减少t1的结果集数量

如果t1 进行group by后,结果集减少的比较少,加上group反而效率会更低。
根据gem_code分布酌情考虑

使用道具 举报

回复
论坛徽章:
7
2013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2013-06-19 15:06:24技术图书徽章
日期:2014-01-26 14:23:572014年新春福章
日期:2014-02-18 16:48:49马上加薪
日期:2014-02-18 16:48:49天蝎座
日期:2015-07-08 22:36:16水瓶座
日期:2016-01-20 11:23:23
20#
 楼主| 发表于 2012-12-6 14:45 | 只看该作者
G8bao7 发表于 2012-12-6 14:36
还有,关于这点
一、在t1中先进行 group by,减少t1的结果集数量

嗯,好的,

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表