|
|
1
5
您正在将varchar列p4f.filerelease与nvarchar列(af.path)联接。由于数据类型不匹配,SQL必须将一个类型转换为另一个类型(当然,它不能从nvarchar转换为varchar)。在将af.path转换为nvarchar时,它失去了使用索引查找/筛选这些值的能力,因此需要扫描和转换所有可能的行。 最好的解决方案是将数据存储为匹配的数据类型(将p4f.filerelase列更改为nvarchar,或将af.path更改为varchar)。由于没有人能够修改现有的数据库结构,因此解决方法可能是在查询中显式地将af.path强制转换为varchar。测试一下看…当然,如果数据确实需要双字节格式,就不能这样做。 |
|
|
2
2
您的问题不是在何处,而是在联接中,您将得到一个隐式转换和对联接的扫描,在何处条件下您将得到一个查找
并行性也可能是一个问题,请尝试添加maxdop=1 你的统计数据是最新的吗?是否存在过多碎片? |
|
|
3
0
尝试将“af.tracked_change_id=1”移到join子句中。
内部连接后的应用位置 |
|
|
4
0
菲利普·凯利发现了这个问题。p4filereleases中的varchar与analyzedfileview中的nvarchar数据类型不匹配。 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
Marc Guillot · 记录值时忽略冲突 1 年前 |
|
|
Fachry Dzaky · 正确使用ROW_NUMBER 1 年前 |
|
|
TriumphTruth · 从满足特定条件的数据集中选择1行 1 年前 |