我需要在SQL Server表中存储可变字符串长度,长度可以从0到10000个字符左右。
我需要使用like运算符%abc或abc%过滤文本。
我想过使用varchar或nvarchar,但我无法在此数据类型上创建索引。
请建议选择列数据类型的设计建议,并使列可索引。
谢谢
发布于 2018-02-10 12:39:14
SQL Server将对like 'abc%'使用索引。但是,如果通配符是第一个,它将不使用索引。
如果您正在搜索完整的单词,那么您应该研究contains() and full text search。
发布于 2018-02-10 15:35:45
我想过使用varchar或nvarchar,但我无法在此数据类型上创建索引。
这些是用于基于文本的信息的适当的数据类型。
不能创建索引的原因与数据类型本身无关-但是在SQL Server中,只有当索引中的列(或列集)具有最大值时,才能创建索引。的理论大小为900字节(或更少)。
这意味着不能对VARCHAR(1000) (或VARCHAR(MAX)) 进行索引。这个大小限制是您的问题,而不是数据类型。
解决方案:实际上只有一个解决方案:在要索引的列中使用较少的字节。或者,按照戈登的建议,查看SQL Server的全文索引功能。
https://stackoverflow.com/questions/48717281
复制相似问题