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/