解决方案 »
- Excel導出問題
- 如何超难的绘图 操作 ????????????? (图)急!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 求ODAC-TOraStoredProc返回带参数的游标的代码。
- 关于findfirst函数的问题!!????????????????????????????????????????
- access的sql中有取模函数吗?
- 关于stringgrid左边格子,有点小分
- 如何把stringgrid中的数据添加进数据库
- 将trichedit里的字保存到sql里为什么读出来以后当初设置好的字体大小没有保存进去?
- 如何高效设计多条件取数
- Seek函数怎么用?
- EXCEL二次开发SDK 如何使用
- xe2 怎么建立ocx工程 新建找不到 Active Form项目
连接数据库会很长时间.Adoquery.open正常不会出现这么严重的延迟.另外:
你的sql语句也可以做出优化:
1对涉及的查询条件字段建立索引
2表关联时使用left join, right join, inner join, 减少外联.
如果可以用join就不要用exists,影响效率
from (select sum(xssl) as sl
,sum(xssl * xsdj) as xf
,sum(xssl * (xsdj - dqdj)) as yh
,sum(xfje) as sf
,Re
from lbxf
,xmlb
where lbbm = kinid
and exists (select top 10000 fkZdh
from fkmx
where jZdh = fkZdh
and jbbc = @CD_jbbc
and Users = @CD_Users
and Created <= @CD_end
and Created > @CD_Start
order by Created desc)
group by Re) a
,xmlb b
where a.Re = b.kinid
order by a.Re
exists的确 该改用 join
不同,同样的sql,返回量只是20条
查询分析器执行 和 程序执行,效率不同,也是不正常
加上Adoquery.Prepared := True;试试顺便看看星星
exists后的查询只要返回一条记录也是“True“,没必要使用top 10000,用一个“*”或用“1”等常数都可。
Prepared 只是 sql的要不要编译 的差异
这个时间是很短的,除非是重复执行成千上万次,才有明显差别
临时表可以最大化筛选记录,减少查询次数