SQL语句优化求助 - MS-SQL Server / 疑难问题
我这有一段语句:
select a.aaid,amount,b.exit_amount
from (select id,object_id,amount,price,date1 from AA where date1 BETWEEN '20100401' AND '20100430' ) a
LEFT JOIN
(SELECT aa_id, isnull(SUM(exit_amount), 0) AS exit_amount from AA_Exit GROUP BY aa_id) b ON a.id = b.yz_id
现在有个问题:
AA这个表有40万条数据,现在我用左连接,语句如上,这样执行要15秒时间.但如果改成如下语句,就只要1秒钟.
select a.aaid,amount
from (select id,object_id,amount,price,date1 from AA where date1 BETWEEN '20100401' AND '20100430' ) a
LEFT JOIN
(SELECT aa_id, isnull(SUM(exit_amount), 0) AS exit_amount from AA_Exit GROUP BY aa_id) b ON a.id = b.yz_id
但我现在必须要用上面这条语句执行.该如何优化.
一样?》
create index ix_aa_id on AA_Exit(aa_id)建索引 试一下
第二次1秒是因为直接从BUFFER CACHE取的原因吧,没有理由两个相差这么大.
{{
相关问答:
1。怎样使xp_cmdshell能完整输出超过255个字符的字符串。
2。select 时,检索速度是与from后的 TABLE顺序有关,还是与where条件的顺序有关(TABLE数据多少 )
在系统属性设定里有个选项,可以修改单字段输出字数限制. ......
我想查询出每天数据的最大的一个值。表的格式如下
表名: hisdata
字段 编号 值 状态 时间
Id value state dattime
101 32.3 0 ......
需求如下:
学院 academy(aid,aname)
班级 class(cid,cname,aid)
学生 stu(sid,sname,aid,cid)
住宿区 region(rid,rname)
宿舍楼 build(bid,rid,bnote) bnote是‘男’/‘女’
宿舍 dorm(did,rid,bid,bedn ......