gpt4 book ai didi

ms-access - 表在日期时间字段上加入 Access 2003

转载 作者:行者123 更新时间:2023-12-04 02:24:29 24 4
gpt4 key购买 nike

我需要将我的数据表连接到服务器日历文件(已设置财务日期、期间等)。我没有得到任何结果,我相信这是因为我的表有像“11/23/2009 11:30:34AM”这样的日期/时间,而日历文件只有像“11/23/2009”这样的日期/时间,所以字段不相同。

当前的 SQL 如下所示:来自 tbl_data在 tbl_data.TRXdate = tbl_calendar.TRXdate 上加入 tbl_calendar

有什么想法吗?

最佳答案

在连接中使用函数不会使用索引。相反,您可以这样做(假设 tbl_data 是其数据中包含时间部分的表):

  SELECT *
FROM tbl_data, tbl_calendar
WHERE tbl_data.TRXdate >= tbl_calendar.TRXdate
AND tbl_data.TRXdate < tbl_calendar.TRXdate + 1

这将在两边都使用索引(尽管不一定同时用于两个标准)。

不使用 BETWEEN/AND 运算符的原因是许多数据库引擎将第二个参数视为包容性参数,因此它会花费您两天的时间,而不仅仅是一个。

更多推测性建议:

  1. ADO 允许在记录集上创建虚拟索引,因此根据您在此处尝试执行的操作,您或许可以通过在计算字段 Int(tbl_calendar.TRXdate) 上创建虚拟索引来加快速度.我从来没有这样做过,只知道这是可能的。

  2. 一些数据库引擎允许在 View 上创建虚拟索引。在 SQL Server 中,这称为索引 View ,它允许您创建索引 Int(tbl_calendar.TRXdate) 表达式的 View 。

  3. 服务器端的临时表也可能是一种解决方案,但索引 View 的工作方式避免了这种需求,因为它将索引 View 保存为表。

  4. 根据其他数据库,可能会或可能不会使用索引。它们在异构连接中的使用效率将取决于所涉及的数据库引擎,以及您使用哪个引擎来执行 SQL SELECT。例如,如果服务器端是 SQL Server,那么通过使用 Jet/ACE 数据文件作为链接服务器从 SQL Server 运行它可能会获得更好的性能。我的假设是,针对这种情况进行了优化,可能会比在 Jet 中更有效地从 SQL Server 中完成,但您必须进行测试才能确定。

  5. 另一种选择是在您的 Access 数据库中填充一个临时表,该表有两列,来自服务器端表的 PK 和根据服务器数据计算的 Int(tbl_calendar.TRXdate) 值。如果将其编入索引,您将在选择 Jet/ACE 数据时获得相当不错的性能。但是,如果您需要返回服务器端数据,您可能不会获得同样好的结果,但它可能比上述任何替代方案都要好。

关于ms-access - 表在日期时间字段上加入 Access 2003,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1918379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com