sql – 在查询中使用时,VARCHAR列的大小是否重要

前端之家收集整理的这篇文章主要介绍了sql – 在查询中使用时,VARCHAR列的大小是否重要前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Possible Duplicate:
07000

我知道包含10个字符的VARCHAR(200)列占用的空间与包含相同数据的VARCHAR(20)列相同.

我想知道将特定表的十二个VARCHAR(200)列更改为VARCHAR(20)是否会使查询运行得更快,尤其是在以下情况下:

>这些列永远不会包含超过20个字符
>这些列通常用于ORDER BY子句中
>这些列通常用于WHERE子句中

>对其中一些列进行索引,以便可以在WHERE子句中使用它们

PS:我正在使用sql Server 2000,但很快就会升级到更高版本的sql.

解决方法

是的,varchar的长度会影响查询的估计,将分配给内部操作的内存(例如用于排序)以及cpu的资源.您可以使用以下简单示例重现它.

1.创建两个表:

create table varLenTest1
(
    a varchar(100)
)

create table varLenTest2
(
    a varchar(8000)
)

2.用两些数据填写它们:

declare @i int
set @i = 20000

while (@i > 0)
begin 
    insert into varLenTest1 (a) values (cast(NEWID() as varchar(36)))
    set @i = @i - 1
end

3.使用“包含实际执行计划”执行以下查询

select a from varLenTest1 order by a OPTION (MAXDOP 1) ;
select a from varLenTest2 order by a OPTION (MAXDOP 1) ;

如果检查这些查询的执行计划,您可以看到估计的IO成本和估计的cpu成本是非常不同的:

原文链接:/mssql/83565.html

猜你在找的MsSQL相关文章