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取的原因吧,没有理由两个相差这么大.
{{
相关问答:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jas ......
可能因为工作的原因 接触数据库这块比较少,之前都是做程序这块,数据库这块都有专门的人来做 分工都很明细 所以对数据库这一块完全不了解。前段时间 去面试了几家公司 几乎都是在数据库这块挂掉的 连个简单的SQ ......
今天做了一个存储过程 环境是SQL2000数据库
大致如下
建立临时表
定义员工游标
循环员工(属于1个公司)
......
字段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 ......
我想查询出每天数据的最大的一个值。表的格式如下
表名: hisdata
字段 编号 值 状态 时间
Id value state dattime
101 32.3 0 ......