如何提高查询速度?(50分)

  • 主题发起人 主题发起人 wsd
  • 开始时间 开始时间
W

wsd

Unregistered / Unconfirmed
GUEST, unregistred user!
下面有一个例子,用来测试tquery的速度:
procedure TForm1.Button1Click(Sender: TObject);
var s:string;i:integer;
begin
s:=edit1.text;
for i:=0 to 1000 do
begin
with query1 do
begin
close;sql.clear;
sql.add(format('select %s from "%s "',[s,'d:/employee.db']));
open;
end;
end;
发现速度奇慢无比,请问有什麽好的方法能加快动态sql语句的速度?
另外我记得用prepare可以,增麽用?
 
为什么要做1000次的循环?测试1000次用了多少时间吗?
就这个SQL语句执行应该很快,如果纪录数比较多的话,建议加上条件.
prepare在open前使用,据书上说,让服务器做好准备.
 
1.在打开Query之前用prepare在Close Query 时用Unprepare,
不过,这个效果好象不太好,在Runtime 改变SQL Text,Query会自动
调用Unprepare,
2.要想使SQL 快,最好是优化Query 语句。象你那种不停的Open
Close Query的测试,肯定是其慢无比了。
有关咋样优化SQL 语句可以Find 以前的帖子。
 
如何优化sql?
 
SQL语句的优化,
1:加强查询条件,在服务器过滤掉不必要的记录。
2:去掉不必要的字段,减少服务器I/O负担。1,2还可以减少网络流量。
3:把比较严格的条件放在前面,可以提前减少参与查询的记录。
4:最好不要使用模糊查询,因为模糊查询要把表scan以遍。
5: 对于查询频率很高的表,可以在表上根据查询条件建立索引
(聚簇索引访问速度最快,但只能有一个)。
 
多人接受答案了。
 
后退
顶部