SQL Server SQL服务器2022:具有两列的唯一索引无法正常工作

xoefb8l8  于 2023-01-12  发布在  其他
关注(0)|答案(1)|浏览(114)

我有一个用户表,其中包含超过50000000个条目。我想检查服务器上是否存在已经注册的用户,然后执行此请求。

SELECT *
FROM 
    (SELECT TOP (1000) * 
     FROM UserdatasTemp) AS ut
     JOIN Userdatas AS u ON u.Login = ut.Login 
                         AND u.Password = ut.Password
      -- ...OTHER JOINS...

我在登录名和密码列上使用了2个唯一索引。同时,我有2个查询计划,其中第一个索引的搜索速度慢,第二个索引的搜索速度快。
索引为IX_Userdatas_Login_Password的第一个计划:

索引为IX_Userdatas_Password_Login的第二个计划:

我在第一个索引中使用登录名和密码列的唯一索引,在第二个索引中使用密码和登录名列的唯一索引。在索引中,这些列不在包含选项卡中。
谁能提示为什么会发生这种情况,以及如何更快地执行给定的请求?
我尝试过重建索引、调整页面大小、重置统计信息以及再次重建索引,但问题仍然存在

kb5ga3dv

kb5ga3dv1#

非常感谢我的朋友们解决了这个问题。问题本身是varchar(450)和varchar(MAX)列中的数据类型不正确。奇怪的是,我在密码中没有看到这个问题,并试图找到索引忘记不同类型的问题

相关问题