【发布时间】:2018-12-24 09:01:23
【问题描述】:
SELECT数据库语句很慢。数据库表有 95.000 条记录。
我有一个索引列表,其中包含索引标签。使用 VPN 测试了远程连接,所以我可以看到速度很慢。
SELECT *
FROM CONTACT
WHERE SUB_NR = 'LD96178117'
-> 需要 3 秒。
SELECT TOP 50 CONTACT.*
FROM CONTACT
ORDER BY SUB_NR
-> 需要 142 秒。
第二次在同一个 AdoConnection 中查询运行得更快。
PROVIDER=VFPOLEDB.1;Data Source=X:\Projects\FoxPro\ElvyTest\ADMSEGJN.DBC;Collating Sequence=machine;SourceType=dbf;Deleted=Yes;Mode=ReadWrite|Share Deny None;Mode=Share Deny None;DELETED=True;CODEPAGE=1252;MVCOUNT=16384;ENGINEBEHAVIOR=90;TABLEVALIDATE=0;REFRESH=5;VARCHARMAPPING=False;ANSI=True;REPROCESS=5;OLE DB Services = 0;
SELECT TOP 50 CONTACT.*
FROM CONTACT
ORDER BY SUB_NR
也测试过:
SET COLLATE TO "MACHINE"
或
SET COLLATE TO "GENERAL"
在 FOXPRO 9.0 SP2 ATAGINFO() 中打开文件显示:
TAGNAME: SUB_NR, TAGTYPE: REGULAR,
EXPRESSION: SUB_NR,FILTER, ORDER: ASCENDING, COLLATION: MACHINE
看起来 VFPOLEDB.1 正在 %TEMP% 文件夹中创建一个临时索引。
SYS(3054,12) 在 Foxpro 中显示 Rushmore 使用带有 select 语句的索引
SELECT *
FROM CONTACT
WHERE SUB_NR = 'LD96178117'
使用索引标签Sub_nr rushmore优化表接触 表联系的 Rushmore 优化级别:完全
SELECT TOP 50 *
FROM CONTACT
ORDER BY SUB_NR
表联系人的 Rushmore 优化级别:无
【问题讨论】:
标签: foxpro