我用DELPHI,数据库用SQL SERVER2000,在进行数据录入时我将图片数据直接写入IMAGE字段,每次记录移动时自动读取并显示,一切正常,但就是运行速度非常缓慢,无法接受,请问这是出了什么问题,是不是数据库要进行优化,如何进行优化,还是DELPHI中的连接设置有问题而造成IMAGE类型的字段读取速度非常缓慢?
记录有一千多条,每个记录的图片都是100K以下,我感到程序在打开窗体时好象要把数据库中整个表的内容都读到本机上,所以打开窗体时也很慢,请帮忙,代码如下:(代码在 adotable1.afterscroll中执行)
var
    picdata:Tadoblobstream;
    picread:Tjpegimage;begin
  picdata:=Tadoblobstream.Create(TBlobField(adotable1.FieldByName('文件')),bmread);
  picread:=Tjpegimage.Create;  
  picread.LoadFromStream(picdata);
  picdata.Position:=0;
  image1.Picture.Assign(picread);
end;

解决方案 »

  1.   

    用两个TADOQuery来做,一个读除Image字段外的所有字段,另一个只读Image字段,并且在两个TADOQuery之间用DataSource来关联(即Master/Detail表),这样就可以保证同一时间只读入一张图
      

  2.   

    1 你打开的时候只调用一条记录,比如
    select * from id = a
    或者select top 1 * from a
    2 你用自己压缩的bitmap会快一点
      

  3.   

    li_zhifu(东北人) 的做法可行
    用两个TADOQuery来做,一个读除Image字段外的所有字段,另一个只读Image字段,并且在两个TADOQuery之间用DataSource来关联(即Master/Detail表),这样就可以保证同一时间只读入一张图