日期:2014-05-18  浏览次数:20409 次

这样定义变量影响效率吗?
在存储过程中,为了不去记忆字段长度,况且又是不敏感的字段,
我定义所有的字符串类型都为varchar(100)
这样会不会影响效率?

------解决方案--------------------
同问, :)
------解决方案--------------------
=============create test data

create table test_a
([id] int, [name] varchar(100))

create table test_b
([id] varchar(100), [name] varchar(100))

insert into test_a
select employeecode, employeename
from mstemployeebasic
select * from test_a

insert into test_b
select cast(employeecode as varchar(100)) , employeename
from mstemployeebasic
select * from test_b

运行
各段时间消耗
query1: 0.00%
query2: 0.00%
query3: 38.62%
query4: 11.29%
query5: 38.62%
query6: 11.47%

看来也就是会影响检索的速度


------解决方案--------------------
定义为varchar的字段效率会低一些

------解决方案--------------------
varchar[(n)]

长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节

不会太影响效率

------解决方案--------------------
不会吧,我觉得应该VARCHAR效率高,占内存少,所以我一直是能用CHAR或者VARCHAR的,我一律都用VARCHAR.如果一个比列的长度小的值被插入到 char NOT NULL 列中,则值的右边以空格填补剩余的位置,这样应该效率稍微受影响,还有占用内存和磁盘的空间也不同