在一个新的使命后更改,我面对一个SQL Server 2000 :(在这里我找到了很多大表没有任何聚集索引所以我建议改变这种测试时,我们发现了。 - 和双重检查 - 即至少一个查询并没有返回相同的结果,当PK指数聚簇,并且当它不是
我知道查询是难看;它是由GUI,其中用户可以选择字段和条件生成的。自定义报告下面是该查询:查询结果作出的PK集群
SELECT DISTINCT p.*, pcc.PatentCostCentreLink_pk, pcc.Client_fk,
pcc.Division_fk, pcc.CostCentre_fk, pcc.Reference, pcc.DecisionMaker
FROM dbo.Patent AS p
LEFT OUTER JOIN dbo.PatentCostCentreLink AS pcc ON p.Patent_pk = pcc.Patent_fk
WHERE (pcc.Client_fk = 2787) AND (pcc.Division_fk IS NULL)
AND (pcc.CostCentre_fk = 20066) AND (pcc.Reference LIKE 'P1049%')
我的问题是:与相同的表 - 除了由变更1个PK到clustered
- 为什么/如何可能相同的查询返回不同的结果集? (非聚集索引23行,聚集索引1行)。
有关查询中无意义的备注是无用的。我知道这很糟糕。
注意:已更改的索引是PK_PatentCostCentreLink,位于dbo.PatentCostCentreLink.PatentCostCentreLink_pk(标识列)。
注2:去除所述DISTINCT
或者改变JOIN
以INNER
时则这两个数据库返回相同的结果(23行),如所预期。但是,我提到过,这是另一个问题。
是否'PatentCostCentreLink.PatentCostCentreLink_pk'包含'NULL'值? – lad2025
@ lad2025 PatentCostCentreLink.PatentCostCentreLink_pk字段不包含'NULL's,如果这是你的问题 –
用于集群/非集群查询 – lad2025