12
返回列表 发新帖
楼主: yisildeai

求助:sql优化

[复制链接]
论坛徽章:
11
鲜花蛋
日期:2011-09-03 18:52:38鲜花蛋
日期:2011-11-09 10:10:12茶鸡蛋
日期:2011-11-19 22:46:41茶鸡蛋
日期:2011-12-14 15:16:572012新春纪念徽章
日期:2012-01-04 11:57:56奥运会纪念徽章:赛艇
日期:2012-09-26 21:40:11ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24
11#
发表于 2012-3-22 16:16 | 只看该作者
yisildeai 发表于 2012-3-22 14:18
这个意思呀..那其实是我要的结果集太多 而导致mysql 全表扫描了.
那 我为什么 用left join 的时候就会用 ...

你仔细看看你在1L写的SQL 和3L写的SQL
第一、select出来的列不同
第二、我看你在3L写的SQL  利用到了idx_uname, 这个是user_name上的索引吗?
你之前没说在这个列上有索引啊。。 如果有的话,那被利用到了很正常啊

使用道具 举报

回复
论坛徽章:
52
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:25生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:32:552012新春纪念徽章
日期:2012-02-07 09:59:35
12#
发表于 2012-3-22 16:48 | 只看该作者
yisildeai 发表于 2012-3-22 11:33
还有想知道  为何 select 内连接 时  用不到 user_id_idx   而转为 left join 才会用到? 但左外连接后 u表索 ...

1.左链接的时候,broker.t_user u 表作为左边的表,也即必须读出来的数据
2.内连接的时候,是把符合2张表要求的数据读出来

所以他们走的索引计划是会存在偏差的

从你的UPDATE语句看,最佳的可能性是,name字段上有索引,也即 .day_resale_detail 表现过滤出来IS NULL的数据,再去循环  t_user表,并且t_user表可以使用上主键


正常的情况下,这样做会非常快的!

使用道具 举报

回复
论坛徽章:
9
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24迷宫蛋
日期:2013-03-06 17:43:59鲜花蛋
日期:2013-04-26 22:57:09蛋疼蛋
日期:2013-06-05 15:38:56林肯
日期:2013-08-16 16:46:322015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39
13#
发表于 2012-3-22 21:48 | 只看该作者
jinguanding 发表于 2012-3-22 16:48
1.左链接的时候,broker.t_user u 表作为左边的表,也即必须读出来的数据
2.内连接的时候,是把符合2张表 ...

想:内连接,也是要先读取第一个表(左边的表)去匹配右面的表。
所以这个好像是讲不通的。

使用道具 举报

回复
论坛徽章:
52
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:25生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:33:22生肖徽章2007版:龙
日期:2012-02-07 10:32:552012新春纪念徽章
日期:2012-02-07 09:59:35
14#
发表于 2012-3-23 13:06 | 只看该作者
sunner888 发表于 2012-3-22 21:48
想:内连接,也是要先读取第一个表(左边的表)去匹配右面的表。
所以这个好像是讲不通的。

内连接可不一定先读左边的表,这个执行计划是看优化器和相关数据的综合分析,而左链接是一定的

使用道具 举报

回复

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

本版积分规则 发表回复

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