从 Access 中的另一个表返回值时,为啥我的查询运行如此缓慢?
Posted
技术标签:
【中文标题】从 Access 中的另一个表返回值时,为啥我的查询运行如此缓慢?【英文标题】:Why is my query running so slowly when returning values from another table in Access?从 Access 中的另一个表返回值时,为什么我的查询运行如此缓慢? 【发布时间】:2014-02-07 16:40:39 【问题描述】:我正在 MS Access 中运行一个相当简单的查询。我正在尝试使用 WHERE 子句从表中过滤结果。我的陈述如下:
SELECT DATA.*
FROM DATA
WHERE DATA.Account_Number In (
SELECT Lookup.AccNum
FROM Lookup
);
我注意到这个查询执行起来非常慢。
相反,如果我明确命名帐号,则结果会在很短的时间内返回。
SELECT DATA.*
FROM DATA
WHERE DATA.Account_Number In ("00001","00002","00003","00004","00005");
第二个查询只需要几秒钟,而第一个查询 - 以表格格式给出相同数量的帐户 - 需要几分钟。
【问题讨论】:
Lookup
中有多少条记录?
该表仅包含 1 个字段,5 条记录。它可以轻松地从 Excel 中转储帐户列表,而无需在引号和逗号分隔的范围内对其进行格式化。
【参考方案1】:
您似乎想使用Lookup
过滤DATA
。您可以通过连接这两个表来实现。
在Lookup.AccNum
上创建索引(如果它尚未编入索引)。
SELECT d.*
FROM
DATA AS d
INNER JOIN Lookup AS l
ON d.Account_Number = l.AccNum;
【讨论】:
如果Account_Number
和AccNum
不是两个文本数据类型,请告诉我们。
已确认。 AccNum 是整数,而 Account_Number 是文本。另外,为了将来参考,我很好奇为什么我的原始帖子被编辑了。
如果可能,将两个字段设置为相同的数据类型,这样 Access 就不需要为 join 或 IN ()
比较执行数据类型转换。
关于编辑,见Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?。
很抱歉,我对 Access 和通用数据库中的这个概念不太熟悉。有没有一种方法可以在 SQL 中转换,就像我会使用变量一样?或者,是否需要在架构中进行更改?另外,感谢您对编辑的澄清。等等,这允许吗?只是在开玩笑。 ;)以上是关于从 Access 中的另一个表返回值时,为啥我的查询运行如此缓慢?的主要内容,如果未能解决你的问题,请参考以下文章
将数据从 MS Access 表单保存到同一个 MS Access 数据库中的另一个表?
当用户在 MS Access 中修改表中的另一列时,如何在 SQL Server 中将列设置为今天的日期 [关闭]
需要表单上的按钮以将表的字段名称插入 Access 中的另一个表
当我尝试从文本文件输入值时,为啥我的类列表(在 C++ 中)会引发错误?