【发布时间】:2011-02-21 06:46:12
【问题描述】:
我有一个错误
Column 'key' in table 'misc_info' is of a type that is invalid for use as a key column in an index.
其中 key 是一个 nvarchar(max)。快速谷歌搜索发现索引的最大长度为 450 个字符。但是,这并不能解释什么是解决方案。我如何创建像 Dictionary 这样的键和值都是字符串并且显然键必须是唯一的并且是单一的?我的sql语句是
create table [misc_info] (
[id] INTEGER PRIMARY KEY IDENTITY NOT NULL,
[key] nvarchar(max) UNIQUE NOT NULL,
[value] nvarchar(max) NOT NULL);
【问题讨论】:
-
您真的需要(可能)4GB 大且独一无二的密钥吗? SqlServer 不允许这样做,因为检查唯一性可能是一个非常耗时的操作。
-
@KlausByskovPedersen 一些更强大的 DBMS(如 PostgreSQL)足够聪明,可以允许它使用并索引摘要。但你说得有道理。
-
限制 varchar 长度是否可行
-
如果您使用的是代码优先的实体框架,如果您尝试索引字符串类型的变量,则会遇到此错误。
标签: sql sql-server-2008