Windows   发布时间:2022-05-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ms-access – 为什么Select * Faster比Microsoft Access DB中的Select Top 1更快大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图让这个样本尽可能简单地重现.我在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”的视图.

大佬总结

以上是大佬教程为你收集整理的ms-access – 为什么Select * Faster比Microsoft Access DB中的Select Top 1更快全部内容,希望文章能够帮你解决ms-access – 为什么Select * Faster比Microsoft Access DB中的Select Top 1更快所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: