数据库执行效率 ( 积分: 20 )

  • 主题发起人 主题发起人 ntjrr
  • 开始时间 开始时间
N

ntjrr

Unregistered / Unconfirmed
GUEST, unregistred user!
for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;15&nbsp;&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOQuery1.Close;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOQuery1.SQL.Clear;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOQuery1.SQL.Add('select&nbsp;round(sum(单项累计),2)as&nbsp;金额&nbsp;from&nbsp;表A&nbsp;&nbsp;where&nbsp;票据号&nbsp;&gt;=&nbsp;'''+kspjh+'''and&nbsp;票据号&lt;='''+jspjh+'''');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOQuery1.SQL.Add('&nbsp;and&nbsp;项目类型&nbsp;=:项目类型');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOQuery1.Parameters.ParamByName('项目类型').Value&nbsp;:=&nbsp;Tot_Name&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOQuery1.Open;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;ADOQuery1.Close;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOQuery1.SQL.Clear;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOQuery1.SQL.Add('select&nbsp;其它内容&nbsp;from&nbsp;表A&nbsp;&nbsp;where&nbsp;票据号&nbsp;&gt;=&nbsp;'''+kspjh+'''and&nbsp;票据号&lt;='''+jspjh+'''');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOQuery1.Open;<br>上面取了两个例子,实际中可能要有五六次这样的查询,后面的票据号条件肯定是一样的,其它的条件和查询内容有一定的区别,我在想,这个数据是不断增长的,有可能会达到数十万条,如果这样查询下来会不会很慢,要不要先把满足票据号条件的记录先写到一个临时表里,然后其它的附加不同条件的查询从这个临时表里再查询?这样会不会快一点。但我以前在哪个地方看到一个资料,好象有这个说法,在进行数据库查询时,电脑本身已经会把第一次查询的资料提到内存中,再执行类似条件的查询就已经会加快了,所以用不用临时表都一样了?
 
数据量不大,并发性不高,无这个必要,加可加索引就可以.若数据量很大,并发性高可,处理过程简单,可考虑用储存过程,数据库会预先优化.
 
有两种可能,一种用的是ACCESS数据库,数据量最大估计在三十万条样子(估计人家能用三五年,再慢我可以不管,叫他清空数据重来),是单机的就没有并发的可能了。还有一种是SQL数据库,数量量也不会太大,也在几十万条样子,并发的数量大该在五台电脑样子,不会超过五台。
 
那还是算了吧,没必要了,就这样可以的。<br>还有,如果用Access&nbsp;,那么,优化什么都没什么效果。
 
多人接受答案了。
 
后退
顶部