MySQL减少varchar索引大小?

时间:2014-02-24 01:54:27

标签: mysql

我有一个包含varchar(255)列的表格。我根据此列执行了大量搜索,因此我需要快速select s。这就是为什么我使用varchar作为primary key,但加倍表的大小。

我有什么方法吗?我理解索引增加了列大小,但加倍它只是荒谬!

是否可以在索引中仅存储varchar的前10个字节,并通过大幅减小尺寸来大幅增加选择时间?

CREATE TABLE data_storage(
id TINYINT UNSIGNED NOT NULL,
data VARCHAR(255) CHARACTER SET utf8 NOT NULL,
no INT UNSIGNED NOT NULL,
UNIQUE KEY(id, data), PRIMARY KEY(id, no)) ENGINE = INNODB

1 个答案:

答案 0 :(得分:5)

您在列上进行多次搜索的事实不应该是您将其作为主键的原因,或者它实际上是一个很好的候选者。

由于唯一性约束,创建像部分索引的主键之类的东西是没有用的;但是,可以创建部分索引:

ALTER TABLE `tablename` ADD INDEX(`colname`(10));

然后,假设您没有指向此表的外键,则删除主键或找到更好的主键。

如果您确实有指向此表的外键,最好创建一个代理键,例如自动递增的整数列。