首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi 4中的查询优化

Delphi 4中的查询优化
EN

Stack Overflow用户
提问于 2011-12-15 14:35:11
回答 5查看 1.6K关注 0票数 3

在Delphi4中,我们有一个SELECT查询,它使用TQuery组件一次获取3个文本类型的字段以及其他必需字段。

有超过1,000条记录(未来可能会增加)。

这个查询消耗了大量内存。我认为由于下一个查询需要花费大量的时间来执行。

我使用BDE连接到SQL-server。

我需要优化性能,这样就不会花费太多时间。敬请指教。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-16 20:19:35

为了减少时间(取决于数据),我们可以在查询中使用DATALENGTH。

喜欢

代码语言:javascript
复制
DATALENGTH(TEXT) <> 0

这不会加载在TEXT字段中没有值的记录。

票数 0
EN

Stack Overflow用户

发布于 2011-12-15 18:42:16

您应该考虑某种分页机制。不要向客户端获取1000条(或100万条)记录,而是使用分页和SQL-server ROW_NUMBER()来获取每页50-100条记录的块。

因此,查询如下:

代码语言:javascript
复制
SELECT id, username FROM mytable ORDER BY id

可能如下所示:

代码语言:javascript
复制
SELECT * FROM (
SELECT id, username, TOTAL_ROWS=Count(*) OVER(), ROW_NUMBER() OVER(ORDER BY id) AS ROW_NUM
FROM mytable 
) T1
WHERE ROW_NUM BETWEEN 1 AND 50

应该对ORDER BY字段进行索引(如果可能),以加快速度。

票数 2
EN

Stack Overflow用户

发布于 2011-12-15 16:34:08

如果您使用TQuery,请确保在检索循环之外使用本地TField以加快处理速度( FieldByName方法有点慢)。

你可以尝试我们的免费开源类来访问任何数据库引擎。

它提供了通过OleDB直接访问MS,而无需调用ADO层。

它在速度上进行了非常优化,即使在旧版本的Delphi上也是Unicode就绪的。它已经在Windows XP、Vista和Seven (包括64位)上进行了测试。

它有一个TQuery仿真器:这不是DB.pas单元中定义的真正的TQuery,而是一个具有大多数相同方法的类。而且您不需要使用所有的BDE类和单元。缺点是你不能使用Delphi DB可视化控件,但对于一个快速的TQuery来说,它可以完成这项工作。

它有一些独特的特性(比如用于字段访问的后期绑定),这是值得考虑的。

它不需要任何第三方库(如BDE),从Delphi5到XE2都可以使用。我猜它也可以在Delphi4下运行。

您可以下载并请求支持in our site

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8516042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档