MySQL更改密钥长度

时间:2016-05-05 21:28:17

标签: mysql

简单的问题。如果我有一个如下表:

CREATE TABLE `exampletable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `textfield` varchar(700) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `textfield` (`textfield`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

如何更改textfield KEY的长度?对于latin1字符集,默认长度为767,而对于UTF8,则为255.但是,如果我有一个latin1表,例如,如何更改密钥以强制最大长度为255?

2 个答案:

答案 0 :(得分:1)

尝试

  ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(255);

请确保您的字符不超过255个

答案 1 :(得分:1)

您可以在VARCHAR(x)列的主要部分创建索引。见这里:

http://dev.mysql.com/doc/refman/5.7/en/create-index.html

CREATE INDEX part_of_textfield ON example_table (textfield(10));

这将有助于搜索。但它作为主键或GROUP BY无效。

您还可以将其包含在表定义中,如下所示:

CREATE TABLE exampletable (
  id int(11) NOT NULL AUTO_INCREMENT,
  textfield varchar(700) DEFAULT NULL,
  PRIMARY KEY (id),
  KEY partial_textfield (textfield(10))
)