在 nvarchar(max) 列上创建索引

问题描述 投票:0回答:2

我的表格包含三列。如果我在 select 语句中选择

NVARCHAR(MAX)
列,我会看到性能很差。是否可以在
NVARCHAR(MAX)
列上创建索引?.

CREATE TABLE TEST
(
     id primary key,
     product VARCHAR(50),
     Title NVARCHAR(max)
)

INSERTING MILLIONS OF RECORDS....

SELECT product, Title 
FROM TEST

该表包含数百万条记录。如何为该列创建索引?它真的能提高我的 select 语句的性能吗?或者有没有其他方法可以改善这个问题?

sql-server-2012 query-performance nvarchar
2个回答
3
投票

您可以使用“全文搜索索引”来索引 NVARCHAR(MAX)。

顺便说一句,您帖子中的 SQL 不包含

WHERE
JOIN
,所以我很确定索引不会提高所有标题的
SELECT
性能。当然,它会降低插入的速度,因为如果添加额外的索引,插入会变慢。


0
投票

当这个问题针对 SQL Server 2012 发布时,900 字节确实是任何类型的索引键(聚集和非聚集)的限制,这在 SQL Server 的更高版本中已发生变化。

直至 SQL Server 2014

任何类型的索引键最大可为 900 字节。

所以最大 nvarchar 应该是这样的

nvarchar(448)

SQL Server 2016 及以上版本

聚集索引键:900字节 非聚集索引键:1700 字节

所以最大 nvarchar 应该是这样的

nvarchar(848)

参考:https://learn.microsoft.com/en-us/sql/sql-server/maximum-capacity-specations-for-sql-server?view=sql-server-2016

© www.soinside.com 2019 - 2024. All rights reserved.