0
我正在面對給定查詢中記錄順序的問題。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。
請您詳細說明優化程序如何使用索引和計劃進行排序?在這種情況下如何使用統計信息? – 2012-07-18 04:18:38
@MukulSinghSaini我已經添加了一句話來解釋,但關鍵是他們*沒有訂購*。他們只是按照發現匹配行的順序出來。 – 2012-07-18 04:23:42
是的,你是對的,我真的想要他們按照@tableAttribue記錄的順序,並已經想出瞭如何做到這一點。但是我想知道sql server如何通過特定的查詢中的連接來排序冗餘順序或缺少順序。 – 2012-07-18 04:52:53