加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

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

发布时间:2021-01-12 22:15:35 所属栏目:编程 来源:网络整理
导读:Possible Duplicate: 07000 我知道包括10个字符的VARCHAR(200)列占用的空间与包括沟通数据的VARCHAR(20)列沟通. 我想知道将特定表的十二个VARCHAR(200)列变动为VARCHAR(20)是否会使查询运行得更快,尤其是在以下环境下: 这些列永久不会包括高出20个字符 这些

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本钱长短常差异的:

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读