您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

加快大表和小表之间的内部联接

加快大表和小表之间的内部联接

不,顺序无关紧要。

几乎所有的RDBMS(例如MS Access,MysqLsql Server,ORACLE等)都基于列统计信息使用基于成本的优化器。在大多数情况下,优化师将选择正确的计划。在您提供的示例中,顺序无关紧要(提供的统计信息是最新的)。

为了决定使用哪种查询策略,Jet Engine优化器使用统计信息。以下因素是这些统计数据所基于的一些因素:

:您不能查看Jet数据库引擎优化方案,也不能指定如何优化查询。但是,您可以使用数据库文档管理器来确定是否存在索引以及索引的唯一性。

然后,基于这些统计信息,优化器将选择最佳内部查询策略来处理特定查询

每当编译查询时,统计信息就会更新。当您保存对查询(或其基础表)的任何更改以及压缩数据库时,该查询都会标记为编译。如果查询标记为要编译,则下次运行查询时将进行统计信息的编译和更新。编译通常需要一秒钟到四秒钟。

如果您在数据库添加了大量记录,则必须打开然后保存查询以重新编译查询。例如,如果您使用一小组样本数据设计然后测试查询,则必须在将其他记录添加数据库之后重新编译查询。执行此操作时,您要确保在使用应用程序时实现最佳查询性能

参考

可能感兴趣:ACC:如何在Microsoft Access 2.0,Microsoft Access 95和Microsoft Access 97中优化查询

Tony Toews的Microsoft Access Performance FAQ值得一读。

如果您的RDBMS基于成本的查询优化器在创建查询计划时超时,则连接顺序可能很重要。基于成本的优化器在构造查询计划时具有有限的资源(cpu时间和内存)。如果他们在编译阶段超时,那么您将获得迄今为止找到的最佳计划。

TLDR;如果您的复杂查询收到计划编译超时(而不是查询执行超时),则应将限制性最强的联接放在首位。这样,在查询计划优化器超时的那一点上,它将增加找到“更好”计划的机会。

当然,如果遇到查询计划编译超时,则可能应该简化查询

其他 2022/1/1 18:42:29 有424人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶