ITPUB??ì3
ITPUB论坛 » MS SQL Server » 求优化高手指导!1000PUB币相送,只有这么多了

标题: [笔记] 求优化高手指导!1000PUB币相送,只有这么多了
离线 xnk9499
一般会员


精华贴数 0
个人空间 0
技术积分 334 (5775)
社区积分 414 (1535)
注册日期 2005-11-2
论坛徽章:3
授权会员生肖徽章2007版:鸡ITPUB新首页上线纪念徽章   
      

发表于 2008-6-30 13:22 
求优化高手指导!1000PUB币相送,只有这么多了

我现在在写个sql,用来查询人员的消费!
涉及到表:sales_record 交易记录表,记录条数:4888407
,表中sales_record_id 为主键,purchase_date 为Clustere index,trx_type,customer_id 为index
customer_profile 人员资料表,记录数:308989 customer_id为主键,apply_date 为Clustere index

select x.customer_id,sum(x.quantity*x.actual_price)as rev,convert(char(8),x.purchase_date,112)as purchase_date                                                                       
from customer_profile y inner join  sales_record x               
on x.customer_id=y.customer_id                                                                       
where x.purchase_date>=y.apply_date and x.trx_type='va'                                                               
group by x.customer_id,convert(char(8),x.purchase_date,112)               
       

目前的执行计划如下:

[ 本帖最后由 xnk9499 于 2008-6-30 13:24 编辑 ]




xnk9499 上传了这个附件:
2008-6-30 13:22
11.JPG (36.59 KB)
 

只看该作者    顶部
离线 xnk9499
一般会员


精华贴数 0
个人空间 0
技术积分 334 (5775)
社区积分 414 (1535)
注册日期 2005-11-2
论坛徽章:3
授权会员生肖徽章2007版:鸡ITPUB新首页上线纪念徽章   
      

发表于 2008-6-30 15:54 
各位大虾,在线等啊!


只看该作者    顶部
离线 lovexueer
开心就好



精华贴数 0
个人空间 0
技术积分 2071 (754)
社区积分 361 (1651)
注册日期 2004-5-20
论坛徽章:1
生肖徽章2007版:鼠     
      

发表于 2008-6-30 16:24 
select customer_id, rev,convert(char(8),purchase_date,112)as purchase_date              from (
select x.customer_id,sum(x.quantity*x.actual_price)as rev,x.purchase_date      
from customer_profile y inner join  sales_record x               
on x.customer_id=y.customer_id                                                                        
where x.purchase_date>=y.apply_date and x.trx_type='va'                                                               
group by x.customer_id,x.purchase_date       ) a


__________________
---------------------
重出江湖
只看该作者    顶部
离线 lovexueer
开心就好



精华贴数 0
个人空间 0
技术积分 2071 (754)
社区积分 361 (1651)
注册日期 2004-5-20
论坛徽章:1
生肖徽章2007版:鼠     
      

发表于 2008-6-30 16:26 
运行这个set statistics io on,然后贴出来两种写法下查询计划与IO成本


__________________
---------------------
重出江湖
只看该作者    顶部
在线/呼叫 jvkojvko
小马哥


精华贴数 1
个人空间 0
技术积分 4961 (264)
社区积分 35034 (24)
注册日期 2007-9-10
论坛徽章:20
奥运纪念徽章祖母绿红宝石海蓝宝石紫水晶紫蜘蛛
玉石琵琶     

发表于 2008-6-30 16:30 
把and x.trx_type='va' 写到inner join 的条件on中会不会有影响?
语句感觉已经都简洁了


__________________
马无夜草不肥,人无外财不富。
只看该作者    顶部
离线 xnk9499
一般会员


精华贴数 0
个人空间 0
技术积分 334 (5775)
社区积分 414 (1535)
注册日期 2005-11-2
论坛徽章:3
授权会员生肖徽章2007版:鸡ITPUB新首页上线纪念徽章   
      

发表于 2008-6-30 16:59 
第二种写法的:

[ 本帖最后由 xnk9499 于 2008-6-30 17:06 编辑 ]




xnk9499 上传了这个附件:
2008-6-30 17:06
33.JPG (33.24 KB)
 

2008-6-30 17:06
44.JPG (23.12 KB)
 

只看该作者    顶部
离线 lovexueer
开心就好



精华贴数 0
个人空间 0
技术积分 2071 (754)
社区积分 361 (1651)
注册日期 2004-5-20
论坛徽章:1
生肖徽章2007版:鼠     
      

发表于 2008-6-30 17:11 
这个你运行了吗?
set statistics io on

看看两个logical reads一样吗?


__________________
---------------------
重出江湖
只看该作者    顶部
离线 xnk9499
一般会员


精华贴数 0
个人空间 0
技术积分 334 (5775)
社区积分 414 (1535)
注册日期 2005-11-2
论坛徽章:3
授权会员生肖徽章2007版:鸡ITPUB新首页上线纪念徽章   
      

发表于 2008-6-30 17:15 
恩,运行了啊


只看该作者    顶部
离线 lovexueer
开心就好



精华贴数 0
个人空间 0
技术积分 2071 (754)
社区积分 361 (1651)
注册日期 2004-5-20
论坛徽章:1
生肖徽章2007版:鼠     
      

发表于 2008-6-30 17:21 
logical reads 分别是多少?

另外你试一下inner  join 变为inner  merge  join ,再看看logical reads 分别是多少?


__________________
---------------------
重出江湖
只看该作者    顶部
离线 xnk9499
一般会员


精华贴数 0
个人空间 0
技术积分 334 (5775)
社区积分 414 (1535)
注册日期 2005-11-2
论坛徽章:3
授权会员生肖徽章2007版:鸡ITPUB新首页上线纪念徽章   
      

发表于 2008-6-30 17:59 
使用inner  merge  join :

[ 本帖最后由 xnk9499 于 2008-6-30 18:01 编辑 ]




xnk9499 上传了这个附件:
2008-6-30 18:01
未命名.JPG (31.39 KB)
 

2008-6-30 18:01
未命名2.JPG (26.3 KB)
 

2008-6-30 18:01
未命名3.JPG (20.78 KB)
 

只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问