我正在处理一些遗留表,这些表的列定义为INT,理想情况下应该是TINYINT,因为它只有一些0到10的查找值。
我正在编写一个SP,其中我将有一个temp变量与此列进行比较。例如:
tblLkpCode(代码INT,名称CHAR(1))
Code Name
0 A
1 B
2 C
3 D
4 E
5 F
6 G
7 H
8 I
9 J
10 K
在我的SP中,我的代码如下:
DECLARE @lkpCode TINYINT = 5 --Should I define this as INT or TINYINT?
SELECT Name FROM tblLkpCode WHERE Code = @lkpCode
我想知道在我的变量可以是TINYINT的情况下,我应该将它们定义为TINYINT,或者因为我要与之比较此变量的目标列是INT类型,所以我也应该将我的变量定义为INT。
如果我将变量定义为INT,则内存中所占用的空间将比TINYINT多,但如果我使用TINYINT,则可能会导致类比转换。
虽然我明白,鉴于我们现在拥有的内存和处理能力,使用这两者中的任何一个都可能根本不会产生任何性能差异。
但我仍然很想知道在这种情况下推荐什么或做好什么?
此外,想象一下,如果我们在20世纪80年代这样做,哪一个更有效,为什么?