Sal*_*n A 6 sql sql-server performance sql-server-2000 query-optimization
我知道VARCHAR(200)包含10个字符的列占用的空间与VARCHAR(20)包含相同数据的列相同.
我想知道更改VARCHAR(200)特定表的十几列VARCHAR(20)是否会使查询运行得更快,尤其是在以下情况下:
ORDER BY子句中WHERE子句中
WHERE子句中使用它们PS:我正在使用SQL Server 2000,但很快就会升级到更高版本的SQL.
Nik*_*rov 11
是的,varchar的长度会影响查询的估计,将分配给内部操作的内存(例如用于排序)以及CPU的资源.您可以使用以下简单示例重现它.
1.创建两个表:
create table varLenTest1
(
a varchar(100)
)
create table varLenTest2
(
a varchar(8000)
)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
3.使用"include actual execution plan"执行以下查询:
select a from varLenTest1 order by a OPTION (MAXDOP 1) ;
select a from varLenTest2 order by a OPTION (MAXDOP 1) ;
Run Code Online (Sandbox Code Playgroud)
如果检查这些查询的执行计划,您可以看到估计的IO成本和估计的CPU成本是非常不同的:

| 归档时间: |
|
| 查看次数: |
5005 次 |
| 最近记录: |