在一個新的使命後更改,我面對一個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