SQL Server列数据类型和可索引
我需要在SQL Server表中存储可变字符串长度,长度可以从0到10000个字符左右变化 我需要使用like运算符SQL Server列数据类型和可索引,sql,sql-server,tsql,sql-server-2012,sql-server-2016,Sql,Sql Server,Tsql,Sql Server 2012,Sql Server 2016,我需要在SQL Server表中存储可变字符串长度,长度可以从0到10000个字符左右变化 我需要使用like运算符%abc或abc%过滤文本 我曾想过使用varchar或nvarchar,但我无法在此数据类型上创建索引 请建议选择列数据类型并使列可索引的设计建议 谢谢SQL Server将为使用索引,如“abc%”。但是,如果通配符是第一个,它将不使用索引 如果您正在搜索完整的单词,那么您应该进行调查。SQL Server将为使用索引,如“abc%”。但是,如果通配符是第一个,它将不使用索引
%abc
或abc%
过滤文本
我曾想过使用varchar
或nvarchar
,但我无法在此数据类型上创建索引
请建议选择列数据类型并使列可索引的设计建议
谢谢SQL Server将为
使用索引,如“abc%”
。但是,如果通配符是第一个,它将不使用索引
如果您正在搜索完整的单词,那么您应该进行调查。SQL Server将为
使用索引,如“abc%”
。但是,如果通配符是第一个,它将不使用索引
如果您正在搜索完整的单词,那么您应该进行调查
我曾想过使用varchar或nvarchar,但我无法在此数据类型上创建索引
这些是基于文本的信息的适当数据类型
无法创建索引的原因与数据类型本身无关,但在SQL Server中,只有当索引中的列(或列集)的最大理论大小为900字节(或更小)时,才能创建索引
这意味着,VARCHAR(1000)
(或VARCHAR(MAX)
)不能被索引。这个大小限制是您的问题,而不是数据类型
解决方案:实际上只有一个解决方案:在要索引的列中使用更少的字节。或者,正如Gordon所建议的,检查SQL Server的全文索引功能
我曾想过使用varchar或nvarchar,但我无法在此数据类型上创建索引
这些是基于文本的信息的适当数据类型
无法创建索引的原因与数据类型本身无关,但在SQL Server中,只有当索引中的列(或列集)的最大理论大小为900字节(或更小)时,才能创建索引
这意味着,VARCHAR(1000)
(或VARCHAR(MAX)
)不能被索引。这个大小限制是您的问题,而不是数据类型
解决方案:实际上只有一个解决方案:在要索引的列中使用更少的字节。或者,按照Gordon的建议,检查SQL Server的全文索引功能。谢谢Gordan。要求不是搜索完整文本,而是搜索结尾文本“%abc”,是否有类似endswith的函数。@sri。只需使用通配符<代码>像“%abc”。谢谢你,戈丹。要求不是搜索完整文本,而是搜索结尾文本“%abc”,是否有类似endswith的函数。@sri。只需使用通配符<代码>类似于“%abc”。