【发布时间】:2010-02-15 23:02:37
【问题描述】:
我有一个从字符串到整数的映射。为了将此地图存储在 MySQL 数据库中,我创建了下表:
CREATE TABLE map(
Argument TEXT NOT NULL,
Image INTEGER NOT NULL
)
我选择 TEXT 类型作为参数,因为它的长度是不可预测的,目前最长的记录有 2290 个字符,平均长度是 88 个字符。
遇到性能问题后,我尝试在Argument 列上添加索引,但发现我必须指定长度,所以为了避免这种限制,我添加了一个包含哈希值的新整数列(md5 或其他)参数列值。
ALTER TABLE map ADD COLUMN ArgumentHash INTEGER;
并结合索引
CREATE INDEX argument_index USING HASH ON map(ArgumentHash, Argument(80));
从那时起,性能问题就消失了。我想问一下解决这个问题的方法是否正确。
【问题讨论】: