我用Access设计的数据库,其中一个表里我有8个字段是用来保存图片的,但是当数据条数增加的越多,执行select语句就会越来越慢,甚至死机(电脑很高档的也死机),请问各位高手有没有可以优化的方法

解决方案 »

  1.   

    我的图片是使用JPEG格式保存的,但是一旦数据记录上到100条或更多的时候,要把这所有的记录检索出来,就会很慢.
    用内存流可以解决吗
      

  2.   

    TMemoryStream
    LoadFromFile()
    TBlobField().LoadFromFile
      

  3.   

    不会吧
    我保存的时候就是用这种方法的
    with Frm_DM.ADO_comm do
        begin
            Close;
            SQL.Clear;
            SQL.Add(strsql);
            for i := 1 to 8 do
            begin
               strimage := 'image' + IntToStr(i);
               if Trim(str[i])<>'' then
               begin
               bufferimage[i] := TMemoryStream.Create;
               bufferimage[i].LoadFromFile(str[i]);
               Parameters.ParamByName(strimage).LoadFromStream(bufferimage[i],ftGraphic);
               end
               else
               begin
               Parameters.ParamByName(strimage).DataType := ftGraphic;
               Parameters.ParamByName(strimage).Value := NULL;
               end;
            end;
            Parameters.ParamByName('imageindex').Value := imageindex;
            Parameters.ParamByName('patientid').Value := strpatientid;
            ExecSQL;
        end;
      

  4.   

    知道你存的时候肯定用的是流~就算你不用流,delphi也会给你转~
    遇到着作用情况的时候,如果图片两大的话,建议你做一个图片管理器~数据库存图片路径就可以了~
      

  5.   

    楼上说的对,Delphi在序列化时默认用流,这种情况下,只有通过改变数据管理方式,如楼上的方法或是数据库管理系统。