我有一個古老的觀點,當我查詢它時會發出一些奇怪的數據。其中的兩列C和D分別具有來自列A和B的數據副本。所以C有一份A的數據副本,D有一份B的數據副本。當我提取視圖使用的查詢並單獨運行時,一切都很好。列A,B,C和D有我期望看到的數據。當我看着視圖定義我注意到它的列選擇一些通配符(*),像這樣:使用通配符選擇列有什麼問題?
SELECT
TableX.*,
TableY.*
FROM
X AS TableX INNER JOIN
Y AS TableY ON TableX.PK = TableY.FK
有人告訴我從來沒有在視圖中其他各種原因使用通配符,但我不知道爲什麼它這種影響?我注意到,當我重新創建視圖並在視圖上運行選擇查詢時,一切正常。其中一位高級開發人員告訴我,由於Sql Server做了一些緩存而出現問題,但我希望能有更詳細的答案。
我同意你應該只拉你需要的列的規則。我理解這背後的推理。我剛剛在處理別人的舊查詢,並想了解實際發生的問題以便使問題出現。我完全打算修復它以顯式設置列。 – skeletank 2010-11-17 22:31:45