查询记录速度慢(100分)

  • 主题发起人 主题发起人 小郭
  • 开始时间 开始时间

小郭

Unregistered / Unconfirmed
GUEST, unregistred user!
查询产品信息,有几十万条记录,每一产品有一图片放在文件夹中,每次查询时通过路径读取相关图片,分屏显示出来
客户要求点查询时一下子查出结果,即显示第一个产品信息,其它的通过翻页来显示,现在问题是通过SQL查询速度很慢(有图片),
也试过用TClientDataSet全部读到内存再过滤,但那样很复杂,且查询条件多时信息不准确,请问一下各位大侠是怎么搞定这种问题的?
欢迎灌水!
 
你可以嘗試使用保存圖片路徑的方式,在數據庫中保存圖片的路徑,然後在讀取時再對image進行賦值,會比較好一點
 
让图片在用的时候在显示。可以看李维的高效数据库里有这个问题的解决方法
 
把集中的查询过程分散开,在运行过程中分解查询过程。
每次只将产品信息索引信息读出来,还要尽量少。
写SQL时尽不要用'Select * from',尽可能明确指出字段名。
根据客户的查询要求,一步步细化你的查询,但每次只提取要求的信息。

如:一开始提产品的分类;
用户选择分类后,提这一类的名称,及简单规格。制作列表让用户选。
如果产品多,还可以分页,每次只提当前页上的信息。
选中产品后,提产品的详细信息。由于这是针对某一产品的信息,数据量大一些也没关系。

将数全部读到内存再过滤是不明智的作法。
网络的传输速度通常是数据库应用的瓶颈,应尽可能把这部分工作交给服务器去做。比如,可以写存贮过程。
 
问题如同查询大量数据记录,在dbgrid上显示出来,然后通过翻页读取
如在SQL企业管理器中打开一个表,每翻一次页读取一次,加快第一次显示示的速度
 
你可以分次查询每取最前面一条,这样就是每次只取一条记录换汤不换药,但是最简单的
 
在数据库中有图片查询很慢,我也碰到过,
谁有好的解决办法呢?
 
大侠呢,再想些办法
 
select top xx 具体看Sqlserver帮助
 
to cash95
我知道top,但是怎样分为一页一页的显示呢?即显示一页查询一页
 
你的问题我不是很明白,你的图片是放在文件夹中还是数据库中?
 
如果是M$的Sqlserver就不知道了,Mysql倒可以用
SELECT * FROM 表1 LIMIT 30, 100;
查询表1返回30-100的记录,
 
一次只选一条也慢吗???
 
分页显示,每次将page加1就可以了,好象是以下语句(for sql server):

SELECT A.* TOP 20
FROM TABLE1 A
WHERE A.ID NOT IN
(SELECT B.ID TOP 20*(PAGE-1)) FROM TABLE1 B)
 
后退
顶部