美好的一天,
我关心mysql中的索引。我试图限制特定数据库表列的索引大小,列名称如### ID。
这似乎ID在前8个字节而不是整个长度中看起来是唯一的。
提前致谢。
答案 0 :(得分:0)
您可以在字段名称后设置大小。您必须先删除旧密钥
ALTER TABLE mytab
ADD KEY `parent` (`parent`(8)) ;
答案 1 :(得分:0)
正如creating indexes上的mysql文档描述:
对于字符串列,可以创建仅使用列值的前导部分的索引,使用col_name(length)语法指定索引前缀长度。
可以为CHAR,VARCHAR,BINARY和VARBINARY列索引指定前缀。
必须为BLOB和TEXT列索引指定前缀。
前缀限制以字节为单位,而CREATE TABLE,ALTER TABLE和CREATE INDEX语句中的前缀长度则被解释 作为非二进制字符串类型的字符数(CHAR,VARCHAR, TEXT)和二进制字符串类型的字节数(BINARY,VARBINARY, BLOB)。在为a指定前缀长度时请考虑到这一点 非二进制字符串列,它使用多字节字符集。
对于空间列,无法给出前缀值,如本节后面所述。
此处显示的语句使用前10个创建索引 name列的字符(假设该名称具有非二进制名称 字符串类型):
CREATE INDEX part_of_name ON customer (name(10));