一个access 数据库 一个表有40万条数据 如何实现查询速度快点(100)

  • 主题发起人 victor9871
  • 开始时间
V

victor9871

Unregistered / Unconfirmed
GUEST, unregistred user!
一个access 数据库 一个表有40万条数据 如何实现查询速度快点 这是本人的代码procedure TFrm_Custom.Btn_S_CustClick(Sender: TObject);var Str:String; i,CustCode:integer; TempSQL,CodeIn,S_Field,Temp:String;begin if Trim(Combo_type.Text)='' then begin MessageBox(self.Handle,'请选择一种查询条件进行查询!','提示',MB_OK or MB_ICONInformation); Exit; end; Screen.Cursor:=crHourglass; Btn_S_Cust.Enabled:=False; Str:='%'+Edit_Key.Text+'%'; with Frm_Data.Qry_Str do begin Close; SQL.Clear; SQL.Add('select * from T_FieldShow where tablename=''Custom'' and Name='''+Combo_type.Text+''''); Open; S_Field:=FieldByName('Field').AsString; end; TempSQL:='Select * from Custom where '+S_Field+' like '''+Str+''''; With Frm_Data.Qry_Cust do begin Close; SQL.Clear; SQL.Add(TempSQL); Open; end; Frm_Main.AddToGridEh(Grid_Cust,Frm_Data.Qry_Cust,'Custom'); frm_main.StatusBar1.Panels[1].Text:='当前共有 '+IntToStr(Frm_data.Qry_Cust.RecordCount)+' 条客户记录'; Btn_S_Cust.Enabled:=True; Grid_Cust.Columns[0].Footer.valuetype:=fvtstatictext; //DBGridEh 最后一排显示总计信息 Grid_Cust.Columns[0].Footer.value:='总计'; Grid_Cust.Columns[1].Footer.valuetype:=fvtcount; Screen.Cursor:=crDefault;end;
 
access 数据库,数据量大,怎么能快!
 
可以参考一下dfw离线阅读器源代码。
 
一般数据量大,不都是分页显示么?~
 
我建议提前作索引。
 
access 40万没试过 ms sql 一个表600万条,120多个字段。4U服务器 5秒可以完成条件查询
 
分成多个表
 
1 对表索引,每张表索引不要过多2 搜索尽量使用精确查询,少用排除法查询3 使用视图查询4 对库进行优化,字段过多索引过多的对表进行拆分
 
可以尝试将一个表分解成多个表,首先不清楚的是你这个表的数据是不是经常都需要用到的?像有些论坛就是将帖子做成多个表来操作,这样可以提高查询速度
 
建议分页或者加条件查询。40万都查出来,你也没用。
 
索引阿,你的查询条件的字段当索引就行了
 
看看你自己写的代码,注定快不了.你再做索引也没什么用,基本不会有什么提升.Str:='%'+Edit_Key.Text+'%';TempSQL:='Select * from Custom where '+S_Field+' like '''+Str+'''';说实在的,40万的记录,如果你的字段不是非常多,就算全部拿到内存,速度也是很快的,当然内存要大点,硬盘要快点.
 
顶部