由於this之前發佈的討論何時想要使用CHAR指出的VARCHAR,當存儲的值大致相同時,可以獲得性能優勢。當然,我會選擇CHAR作爲存儲2個字符的狀態碼數據的數據類型。CHAR與VARCHAR以及加入時產生的影響
我只想確認一下,這意味着當你執行一個SQL來過濾這個列時,過濾值必須用足夠的空格填充以等於char字段的定義長度。
例如,假定一個表 「CODE_TABLE」,其中列10_CHAR_CODE被定義爲CHAR(10):
SELECT * FROM CODE_TABLE WHERE 10_CHAR_CODE = 'ABCDE'
並且如果10_CHAR_CODE是一個「邏輯「外鍵,但不存在特定的關係完整性約束,存儲在10_CHAR_CODE查找表中的值理想地應該是相同的數據類型(Char(10))以避免在加入時必須執行低效的RTRIM功能
(我們有一個嬰兒大小的數據倉庫和DBA認爲Referen tial完整性約束效率低下,因此我們最終導致跨表的數據的數據類型定義不一致。)
我的印象是否準確?
從我讀過的一些東西,實際上可以通過連接整數而不是varchar列獲得更好的性能。 :-D – DForck42 2011-05-12 14:30:50