限制mysql中特定DB列的索引大小

时间:2016-04-07 08:48:55

标签: mysql

美好的一天,

我关心mysql中的索引。我试图限制特定数据库表列的索引大小,列名称如### ID。

这似乎ID在前8个字节而不是整个长度中看起来是唯一的。

提前致谢。

2 个答案:

答案 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));