mysql - 为什么 SQLyog 返回 MySQL 查询结果的速度比我的 Delphi 程序快 10 倍?

标签 mysql delphi optimization odbc

select rectype,jobid,jobrecid,template,assignedto,entereddt,enteredby,ref1,processed,processeddt,
processbydt,title,description,connectlanhandle,finished,updateddt,ref2,cancelled,
requireaccept,acceptrejectstate,acceptrejectbydt,alert1dt,alert2dt,alert3dt,despatchallowed,
flag,ref3,projectid,duration,skillset,postcode,prefschedulefrom,prefscheduleto,customdata1,
customdata2,customdata3,hasnotes,displayjobtype,createdby,createddt,colour
 from jobs
 where updateddt >= '1982-02-05 17:25:38'
 or (processed = 'N' and
     cancelled = 'N')
 order by jobid, jobrecid

此查询返回约 80000 个结果。 SQLyog(一个 MySQL 图形用户界面)可以在 ~600 毫秒内以可见网格的形式返回结果。我的 Delphi 程序使用 ODBC(最新的 MyODBC 驱动程序)进行连接,仅需要大约 6000 毫秒来进行查询,甚至没有开始查看结果。

关于如何使我的程序更快,我有什么想法吗?

最佳答案

我的猜测是 SQLyog 实际上并没有在 600 毫秒内显示所有 80,000 个结果——它可能在显示第一个结果时仍在加载后面的结果。 (特别是,即使不涉及数据库,我见过的大多数 GUI 框架也无法快速填充 80,000 行。)

您可以尝试做同样的事情,假设您正在使用的 API 允许您以流方式获取结果(而不是在调用返回之前将所有内容传输到内存中)。

关于mysql - 为什么 SQLyog 返回 MySQL 查询结果的速度比我的 Delphi 程序快 10 倍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1031484/

相关文章:

php - 基于一行中所有字段值的脚本

mysql - 在 W2UI 和 MySQL 中处理日期

delphi - Windows 图元文件的尺寸有限制吗?

python - np.exp 比 np.e 慢多少?

c++ - 是否有 C++ 方法允许在不创建临时变量的情况下多次使用函数指针?

mysql - 我想操作 table1 中的 "AS age"列

c - 缺少 kernel32.dll 的依赖项

delphi - 如何在Delphi中编写一个EXE,它也是一个COM服务器

javascript - 如何使这个 jQuery 驱动的页面更快速?

php - 当 MYSQL 列值递增 100 时做些什么