我的表包含三列。如果我在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语句的性能吗?或者有其他方法可以改进这一点吗?
您可以使用"全文搜索索引"对NVARCHAR(MAX(进行索引。
顺便说一句,你文章中的SQL不包括WHERE
或JOIN
,所以我很确定索引不会提高所有标题的SELECT
性能。当然,这将降低插入的速度,因为如果添加额外的索引,插入的速度会较慢。
当这个问题针对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-specifications-for-sql-server?view=sql-服务器-2016