前台是Delphi6,数据库是MsSqlServer2000,数据有6000多条。5个表联合查询,用查询分析器查询需要2-3秒,用程序开始查询到显示结果集大约十几秒的时间,客户要求加快显示时间,有没有好的办法?谢谢!
查询格式为:
Select
a.Id,
a.Name,
a.....,
b.Name,
c.Class,
d.Teacher,
e.Student
from a
left join b on a.ID = b.ID
left join c on c.ClassID = a.ClassID
left join d on d.TeacherID = e.TeacherID
left join e on e.StudentId = a.StudentID
语句恐怕是没法调了,可以在前台显示的时候做处理,部分显示应该会快些
在上面的查询语句上新建一个视图, 然后在视图上建立索引;
另外不知道那个表是 6000 条记录,还有关系是怎么样的?
是啊!语句量大,而且是显示的,要不你建立一个视图,调用视图来试试!
1. 做为关联条件的字段上建立索引
2. 合并能合并的表,以缩减关联的表的数目
关联条件的字段上建立索引,這個可以提高查詢速度很多
用查询分析器查询需要2-3秒,用程序开始查询到显示结果集大约十几秒的时间
--意思是说大部分时间不是花费在数据库方面了,即便你把数据库的处理时间降到 0 秒,你要在程序中查询并且显示结果也要 10 秒以上把; 主要优化应该是程序方面了
不知道你上面的结果会显示多少数据, 是把所有数据全部显示出来? 如果数据量较多采用分页存储过程较好点
如果你不是全部显示是分页的话,可以在D6的数据集控制设置
1。如果从数据库方面来优化,采取邹老大的建议。
2。如果从程序方面优化,建议采用分页技术。这方面资料很多的。