주어진 쿼리의 레코드 순서에 문제가 있습니다.통계 업데이트로 T-SQL의 레코드 순서가 변경됨
SELECT
EA.eaid, --int , PK of table1
EA.an, --varchar(max)
EA.dn, --varchar(max)
ET.etid, --int
ET.st --int
FROM dbo.table1 EA
JOIN dbo.table2 ET ON EA.etid = ET.etid
JOIN @tableAttribute TA ON EA.eaid = TA.id -- TA.id is int and is not a PK
ORDER BY ET.st
ET.st 열의 값은 주어진 시나리오의 모든 레코드에서 동일합니다.
쿼리가 제공 한 레코드의 순서는 통계 업데이트시 임의로 변경됩니다. 때로는 EA.eaid의 순서이며 때로는 TA.id의 순서입니다.
이러한 행동에 대한 설명을 제공해주십시오. 여기 통계가 주문에 어떻게 영향을 줍니까?
SQL Server 2008 R2를 사용하고 있습니다.
옵티마이 저가 주문시 인덱스 및 플랜을 사용하는 방법에 대해 자세히 설명해주십시오.이 경우 통계는 어떻게 사용됩니까? –
@MukulSinghSaini 설명 할 문장을 추가했으나 중요한 것은 * 주문하지 않았기 때문입니다. 그들은 단지 일치하는 행이 발견 된 순서대로 나오고 있습니다. –
예, 당신 말이 맞아요, 사실 나는 그들을 @tableAttribue 레코드의 순서대로 원했고 이미 그것을하는 방법을 알아 냈습니다. 하지만 쿼리에서 조인을 사용하여 SQL Server에서 중복 된 순서에 따라 행을 정렬하거나 누락 된 순서를 정렬하는 방법을 알고 싶었습니다. –