联接两个表而一个表有很多行时,为什么SQL查询需要太长时间执行

问题描述

SELECT object_oid,parent_oid,object_type,filetype,token
FROM TemporaryFiles
WHERE token NOT IN (SELECT DISTINCT
                           TemporaryFiles.token
                    FROM TemporaryFiles
                         INNER JOIN Tokens ON TemporaryFiles.token = Tokens.token);

TemporaryFiles 表-该表大约有5,000行

----------------------------------------------------
Column Name     DataType
OBJECT_OID      int 
PARENT_OID      int 
OBJECT_TYPE     varchar(100)    
FileType        varchar(255)    
Token           varchar(255)    
DBKEY           int    ------------------------Primary Key

此表在主键DBKey上具有一个聚集索引

令牌表-该表大约有900,000行

--------------------------------------------------------------
Column Name     DataType
OBJECT_OID      int
PARENT_OID      int
OBJECT_TYPE     nvarchar(64)
CHILD_TYPE      nvarchar(64)
FileType        nvarchar(32)
Token           nvarchar(255)
CreationTime    datetime
Contextual      bit
DBKEY           int      ------------------------Primary Key

DBKey的主键上有一个聚集索引 还有一个关于OBJECT_OID,OBJECT_TYPE,上下文,

的非聚集索引

我尝试为两个表在Token上再创建一个非聚集索引。查询仍然需要无限的时间来执行。

即使我尝试将“不存在”更改为“不存在”语句。但我仍然看到这个问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)