ms-access – 为什么Select * Faster比Microsoft Access DB中的S
我试图让这个样本尽可能简单地重现.我在MS Access中有一个表,大约有425,000行.当我再次执行以下查询时,表执行大约需要10秒钟:
SELECT TOP 1 BlockID FROM AvailabilityBlocks ORDER BY BlockID; “BlockID”字段是主键并被索引. 但是当我运行以下查询时,它会在不到2秒的时间内返回: SELECT BlockID FROM AvailabilityBlocks ORDER BY BlockID; 我已经尝试重建索引,甚至做了一个紧凑和修复,并没有产生任何影响. 任何帮助或见解都将非常感激! 解决方法
扩展实验时,您将以更多方式看到MS-Access的这种行为.
此处的观察结果在一个4百万行的MS-Access数据库中重现,用于将CSV导入传输到SQL服务器. 当选择具有排序顺序的所有未索引字段时,MS-Access需要3分钟才能执行.选择所有索引字段时,它需要分秒.当选择索引字段的TOP 1时,它再次花费3分钟,这证明该函数没有使用可用索引.作弊(SELECT TOP 1 BLOCKID FROM(SELECT BlockID FROM AvailabilityBlocks ORDER BY BlockID)也没有使用索引,也需要3分钟. 我的解释是MS-Access具有原生的“喷气引擎”功能,可以接受某些用途(我仍然在一些轻量级网站上使用MS-Access). ‘jet引擎’支持视觉查询设计屏幕的所有功能.从Office 2007开始,添加了另一层功能,以使SQL语言与T-SQL兼容. ‘TOP 1’语句是其中一个’新’函数.如您所见,视觉设计不支持它.很明显,没有创建此函数来使用现有索引. 您可以在“Access for options”中将代码限制为喷气引擎功能 – > ‘为对象设计’ – > ‘查询设计’ – > ‘与SQL服务器的兼容性(ANSI 92). 保护您在MS-Access中投资的另一个选择是将数据迁移到ODBC数据库(MYSQL,SQL服务器,Oracle …),并仅将MS-Access用作前端.然后可以通过更优化的引擎呈现具有“顶部1”的视图. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-installer – 用于了解Windows Installe
- windows-server-2003 – IIS6:Web站点提供错误的
- 窗口 – 为什么UTF-8不允许作为“ANSI”代码页?
- Windows 7 PHP MySQL连接问题
- winforms – Windows窗体测试自动化
- wix – 为什么Windows Installer在删除期间不会使
- WiX:避免显示正在使用的文件对话框,只是在安装结
- windows-server-2008 – 我可以向客户端发送预先
- windows-7 – 有没有办法集中管理Dropbox /集中禁
- Windows – MongoDB:服务器有启动警告