SQL查询优化联接多列

SQL查询优化联接多列,sql,ms-access,join,optimization,ms-access-2010,Sql,Ms Access,Join,Optimization,Ms Access 2010,我在MicrosoftAccess上有两个表:T_数据约200000行,T_REAF约1000行 T_数据有很多列,大约30列,T_REAF大约有10列 我必须告诉你,我不允许更改这些表,也不允许创建其他表。我必须和它一起工作 两个表有6列相同。我需要连接这6列上的表,从T_数据中选择所有列,以及在T_区域但不在T_数据中的列 我的问题是: 选择A.*,B.CARROS\u NEW,B.SEGT\u NEW,B.ATTR 变成可融资的 从T_数据A左连接T_区域B打开 A.区域,如B.区域和

我在MicrosoftAccess上有两个表:T_数据约200000行,T_REAF约1000行

T_数据有很多列,大约30列,T_REAF大约有10列

我必须告诉你,我不允许更改这些表,也不允许创建其他表。我必须和它一起工作

两个表有6列相同。我需要连接这6列上的表,从T_数据中选择所有列,以及在T_区域但不在T_数据中的列

我的问题是:

选择A.*,B.CARROS\u NEW,B.SEGT\u NEW,B.ATTR 变成可融资的 从T_数据A左连接T_区域B打开 A.区域,如B.区域和 A.像B.一样付钱 A.品牌与B.品牌与 A.MODELE像B.MODELE和 A.卡洛斯喜欢B.卡洛斯和 A.SEGT与B.SEGT相似

我有我需要的结果,但问题是这个查询花费的时间太长,无法给出大约3分钟的结果。 我知道T_数据包含很多行200000,但我认为3分钟对于这个查询来说太长了

你能告诉我这个问题出了什么问题吗


非常感谢您的帮助

我假设这6列是相同的,也可能有相同的数据类型

注:Equals=运算符是一个比较运算符-用于比较两个值是否相等。因此,在查询中,将LIKE替换为=并查看结果时间

SELECT A.*
      ,B.CARROS_NEW
      ,B.SEGT_NEW
      ,B.ATTR
       INTO FINALTABLE
FROM   T_DATAS A
       LEFT JOIN T_REAF B
            ON  A.REGION = B.REGION
                AND A.PAYS = B.PAYS
                AND A.MARQUE = B.MARQUE
                AND A.MODELE = B.MODELE
                AND A.CARROS = B.CARROS
                AND A.SEGT = B.SEGT

我假设这6列是相同的,也可能有相同的数据类型

注:Equals=运算符是一个比较运算符-用于比较两个值是否相等。因此,在查询中,将LIKE替换为=并查看结果时间

SELECT A.*
      ,B.CARROS_NEW
      ,B.SEGT_NEW
      ,B.ATTR
       INTO FINALTABLE
FROM   T_DATAS A
       LEFT JOIN T_REAF B
            ON  A.REGION = B.REGION
                AND A.PAYS = B.PAYS
                AND A.MARQUE = B.MARQUE
                AND A.MODELE = B.MODELE
                AND A.CARROS = B.CARROS
                AND A.SEGT = B.SEGT

这有两个步骤。一个是将查询更改为使用=。我不是100%确定这是否必要,但这不会有什么坏处。第二个是创建索引

因此:

其次,您需要一个关于T_REAF的索引:

然后,MS Access可以将索引用于连接,从而加快查询速度


注意,我将表别名更改为表名的缩写。这样可以更容易地遵循查询中的逻辑。

这需要两个步骤。一个是将查询更改为使用=。我不是100%确定这是否必要,但这不会有什么坏处。第二个是创建索引

因此:

其次,您需要一个关于T_REAF的索引:

然后,MS Access可以将索引用于连接,从而加快查询速度


注意,我将表别名更改为表名的缩写。这使得查询中的逻辑更容易。

为什么在查询中使用类似于此的查询?也可以考虑将一些索引放在表上以加快查询为什么使用类似于查询的方法?也可以考虑将一些索引放在表上以加快查询速度。从“喜欢”更改为“喜欢”,并使请求速度加快约30秒,而不是3分钟前。我还创建了索引。有没有办法看看这个索引是否真的被Access使用,或者我必须信任它?谢谢!从“喜欢”更改为“喜欢”,并使请求速度加快约30秒,而不是3分钟前。我还创建了索引。有没有办法确定Access是否真的使用了索引,或者我必须信任它?
CREATE INDEX IDX_REAF_6 ON T_REAF(REGION, PAYS, MARQUE, MODELE, CARROS, SEGT);