Delphi7查询SQL Server2008的效率问题
最近在写一个程序是关于sql2008数据查询的,其中遇到了几个问题 ,无从下手,请大神指点
我是通过TADOConnection组件与SQL Server建立联系,通过TADOQuery组件进行数据访问,编写SQL语言进行查询,数据库的 表很简单,只有一个表,表中有ID、时间戳、以及20多个字符串项,每项不超过10个字符,数据库大概有15G左右。数据库表不是我建立的,而且已经应用无法更改。
我的目的是将数据库中的有异常变化的数据取出,然后判断其属于什么异常变化。
我目前是每次取出1W条数据(不敢添加查询条件,因为异常变化的数据是不定时出现的,有时候一查就是老半天),然后通过我写的算法逐条进行判断。
遇到的问题:
1、单次查询1W条数据时只需要140毫秒左右的时间,但连续取时(也就是取数-算法判断-取数-算法判断时)几次过后取数时间就变为2-3秒。不知道原因在哪,我是通过ID进行查询的。
2、查询的时候就程序假死,网上查了半天,说是应该另开线程进行(我现在是写在timer控件里的),还没试不知道能不能解决。
有没有更效率的方式去查询呢?
3、执行算法的时间有点长,且每次CPU占用率都在50%-80%左右,不知道原因,我是从TADOQuery里面读一条算一条,然后next下一条再算。查了一下,说是应该先放在数组中,还没试,不知道是不是因为这个原因。
以上就是我遇到的几个问题,烦请各位大神帮我解惑一下。