SQL Server索引性能 – 长列

sql Server(2005)中,我需要索引一个列(仅限完全匹配),即nvarchar(2000).什么是最具可扩展性,高性能方法

sql Server(2005)中,使用以下类型对列进行索引的实际区别是什么:

> nvarchar(2000)
> char(40)
>二进制(16)

例如.对索引二进制(16)列的查找是否明显快于对索引的nvarchar(2000)的查找?如果是这样,多少钱?

显然小在某些方面总是更好,但我不太熟悉sql Server如何优化其索引以了解它如何处理长度.

解决方法

你从错误的方向思考这个问题:

>创建满足性能目标所需的索引
>不要创建不需要的索引

无论列是二进制(16)还是nvarchar(2000)都没有什么区别,因为你不要只是不加考虑地添加索引.

不要让索引选择决定您的列类型.如果需要索引nvarchar(2000),请考虑全文索引或为列和索引添加哈希值.

根据您的更新,我可能会使用HashBytes()函数和索引创建校验和列或计算列.请注意,校验和与加密哈希值不同,因此您更有可能发生冲突,但您也可以匹配文本的全部内容,并且它将首先使用索引进行过滤. HashBytes()不太可能发生冲突,但它仍然可能,因此您仍然需要比较实际列.对每个查询和每次更改计算哈希值,HashBytes也更昂贵.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...