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)文件浏览框(选择文件使用)
选择好文件后
点击一个导入按钮的时候 ,把上面上传框里的csv文件以一个ID为文件名,上传到**/**文件夹下
2)读取这个文件夹下的csv的文件,转换成sql
3 ......
我一个项目,有个插入操作,具体是这样的:
我有进货信息表。在出货时选择相应的进货信息,输入数量,选择部门后,点保存按钮,由于网络延时,点一下没有反映,于是用户就又点一下,导致一次插入了两条记录:
例:
......
tab1 字段:billdate,goodsid,incount,inmoney,outcount,outmoney,endprice,endcount,endamt
tab2 字段:goodsid,goodskind(商品类型)
tab3 字段:goodskind(商品类型),kindname
结果:
得到商品类型在一段时间 ......
字段1,字段2.....字段N,Status,ParentID
1,Name1....test1,1,99
1,Name1....test1,3,99
1,Name2....test2,1,101
1,Name2....test2,3,101
1,Name3....test3,2,101
1,Name1....test1,4,101
想要的结果是:
1,Na ......
有2个数据表A与B,如何补充A中没有,B中有的数据,使A表数据完整?请写下具体源代码
SQL code:
insert A select * from A right join B on A.key=b.key where A.key is null
select * from B left join ......