2009-02-25 47 views

回答

2

有性能考慮相關的大小連接列。一個整數是4個字節寬 - 所以任何大於4字節的char值都需要更多的磁盤I/O,緩存空間等等。顯然,char(5)不會影響太多,但char(4000)會非常浪費。如果使用unicode類型,請將char大小加倍。

通常這個問題出現在自然vs代理鍵的上下文中。在這個參數中,數據類型的大小不是唯一的因素 - 因爲通常可以避免使用自然(char)鍵進行連接。

當然,任何人都不可能成爲您的應用程序的瓶頸 - 所以設計時不會逍遙法外(至少在這方面)。

1

不,沒有(在Oracle中)。有什麼可以改變的是:
- 如果您的連接條件中的數據類型不同(隱式轉換會導致性能損失)。所以將一個char加入varchar可能會很糟糕。
- 如果一個字段有索引而另一個字段沒有索引。
- 如果一列中的數據比另一列中的數據長得多。

0

沒有,只要數據類型是你加入表之間的同你應該罰款

1

CHAR或VARCHAR將被存儲爲根據您的字符集ASCII或Unicode。一個int將被作爲一些打包的表單存儲。如果以int形式獲取數字,它將小於字符(字符串)形式中的相同數字。作爲數字類型存儲總是比存儲爲字符更高效。

4

加入char或var char通常會產生開銷,而不是加入int。有兩個因素我知道比較時字符的:
- 覈對必須加以
的帳戶 - 炭領域都更多的數據要比較*

*(每個字符表示由8位,一個10 char值因此是80位長,相比於一個int 32位)

*(這是每個字符16個比特如果使用NCHAR或NVARCHAR)

+0

我知道這個問題會提高你的興趣:) – 2009-02-25 22:03:38

+0

他說這是因爲如果我看到字符字段上的連接,我吹我的頂部:) – MatBailie 2009-02-25 22:04:35