上百万记录的数据库(SQL)打开数据表时很慢(查询) 等到查询完后才能做其它操作, 我用线程也不起作用 各专家如何做好?(200分)

  • 主题发起人 20020401wgy
  • 开始时间
2

20020401wgy

Unregistered / Unconfirmed
GUEST, unregistred user!
上百万记录的数据库(SQL)打开数据表时很慢(查询) 等到查询完后才能做其它操作, 我用线程也不起作用 各专家如何做好?
 
将你的查询优化一下
用线程的话应该可以解决界面等待的问题的。
 
这可能有很多原因
1、表索引没有建好;
这个就要根据你的表的用途及常用查询来判断如何建立一个有效的索引
2、查询语句没有优化;
根据你的索引来优化查询,将无关的数据过滤出去,
3、在你查询时,tquery或者其它查询控件与显示控件(如dbgrid)之间仍然有关联。
在查询期间,可以使用query1.disablecontrols来断开与显示控件的连接,在查询结束后再
连接上。
以上说的都很简单,不只对你有没有帮助?
 
上百万记录,当然慢,如果不是打印报表可以考虑分批取数据
 
可以用CDS,在用多线程分批将数据放到不同的CDS中,然后将查询通过多线程提交到不同的CDS进行查询
 
有没有必要一次读取那么多条记录??????
真有上百万条记录,用什么方法我看读取都会很慢的[:D][:D][:D][:D][:D]
 
有没有必要一次读取那么多条记录??????
 
select top 1000 字段名 ...... from 表名 条件 order by 字段名
这样仅仅取按某个顺序排列的前1000个,这样处理应当可以将你的效率
提高几十倍
(就是分批取数据的方法)
 
你不会一次读100万条吧?
 
分成多批次取吧,没其他更好的办法。
 
改进你的程序.数据只在需要时才到前台.(除了报表,还有什么需要将上百万的数据送到前台?)
 
1.索引
2.过滤
3.分批取数据
 
各位大虾 因5.1放假没有能及时给分 对不起! 你们的答案都是关键性的问题
数据已经优化和索引
但过滤没有什么意义 因为我是按时间日期统计(过滤条件也就是查询统计查询条件)
 
如果使用ado连接
你可以设置为多线程模式
这样在开头接受一定的数据后窗口就可以活动了
 
如何分批从数据库中取数据!关注!
 
分批处理,但数据表中应该有一个字段是登记当前查询到哪里的标记,以便下次继续查询。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部