我有一个带有varchar(255)列的表.我根据这一栏进行了很多搜索,所以我需要快速搜索select.这就是为什么我用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
Run Code Online (Sandbox Code Playgroud)
您在列上进行多次搜索的事实不应该是您将其作为主键的原因,或者它实际上是一个很好的候选者.
由于唯一性约束,创建像部分索引的主键之类的东西是没有用的; 但是,您可以创建部分索引:
ALTER TABLE `tablename` ADD INDEX(`colname`(10));
Run Code Online (Sandbox Code Playgroud)
然后,假设您没有指向此表的外键,则删除主键或找到更好的主键.
如果您确实有指向此表的外键,则最好创建一个代理键,例如自动递增的整数列.
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |