请教包含大量记录的数据表的显示查询方案!在线等待!(50分)

  • 主题发起人 主题发起人 qdgm988
  • 开始时间 开始时间
Q

qdgm988

Unregistered / Unconfirmed
GUEST, unregistred user!

有一个主表70万条记录,四个从表每个表>100万条记录(销售清单)
显示和查询巨慢!!请教各位是如何解决的??

 
关于提高查询速度的讨论已经很多了,可以看看。
不外乎硬件、数据库、索引、临时表、存储过程、合理的sql语言组织等方面下手。
 
看看以前的贴子把
我记得可以分两个线程
一个负责显示
一个负责查询
没查询出100条 查询线程就将结果提交给显示现成
如此一来 客户感觉不到查询速度的缓慢
 
一次顯示一點嘛﹐誰一下看得完那么多啊﹑
 
你的表记录是太大了点,,你就只有分段查询了,,要不,,除非你的计算机用银河之类的
来,包你可以一下就搞定,,即使再翻几倍的记录,,一样搞定,,呵呵,,,楼上说得不错,
“誰一下看得完那么多啊”,,,

而且,,你的查询的条件要注意,,,查询速度还可以快些,,只不过你要用存储过程来作,
绝对比你直接用sql快,,写语句的时候向别的那些高手请教,,要把语句的效率尽量提高,

显示的问题,,没法,,你可以分段显示用户关心的部分,,还要计算机的硬件要配好些,,

暂时就这些了,,
 
对了,,你是否可以将表划分得小些呢?

我看到你标了“销售清单”,,我想你可以以天或周或月或其它天数为单位,生成一张标,

而表的名称就可以用datetime,这样你的表就小了,,,相对来说,,多张表比一张巨大的表
进行查询要好些,,,
 
我现在想解决显示的速度问题,可否在显示时采用线程,请详细一点!
 
找一本多线程的书看看,上面一般都会有简单的例子的。一般的作法是在NEW中选择
Thread Object,然后就会有一个要你输入名字的对话框,OK后就有一个新单元了。
你要作的事就是要写Execute方法来完成你的任务了。。。
一般的作法是在这个单元中写自己的方法梦或者函数,然后再Execute中调用,
调用时一般用 Synchronize(你的方法);
 
就是使用多线程查询,查询可以分多个线程进行,然后一个线程显示数据就可以了
 
小弟对线程不是很了解,采用多线程显示时,明显感觉占用相当多的系统资源,
不知如何解决?
另:每个线程是否select一段数据?如何作?

多谢!
 
>>采用多线程显示时,明显感觉占用相当多的系统资源,
不要用太多的线程,用2个或者3 个就应该够了吧?!
》》每个线程是否select一段数据?如何作?
你如果用ADO的话,用它的P a g e S i z e属性。
或者你查询一下TClientDataSet.PacketRecords属性。
作法是:取得A D O的R e c o r d s e t对象。
设定R e c o r d s e t对象的P a g e S i z e属性值,以决定一个页面包含多少笔数。
存取R e c o r d s e t对象的P a g e C o u n t以便了解数据表被切割成多少的页面。
设定R e c o r d s e t对象的A b s o l u t e P a g e属性值以决定要存取的页面数据。

另外,最好是把QUERY控件传入线程中。线程退出时不要释放QUERY控件(这是我的想法,
不知道可不可行,你试试吧)。
 

Similar threads

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