9
我有一个从字符串到整数的映射。存储该地图在MySQL数据库中,我创建了如下表:这是索引MySQL数据库的TEXT列的正确方法吗?
CREATE TABLE map(
Argument TEXT NOT NULL,
Image INTEGER NOT NULL
)
我选择的参数文本类型,因为它的长度是不可预知的,目前最长的记录有2290个字符,平均长度为88个字符。
在遇到性能问题后,我尝试在Argument
列上添加索引,但发现我必须指定长度,所以为了避免这种限制,我添加了一个新的整数列,其中包含散列值(md5或其他)参数列值。
ALTER TABLE map ADD COLUMN ArgumentHash INTEGER;
并结合指数
CREATE INDEX argument_index USING HASH ON map(ArgumentHash, Argument(80));
自那时以来,其性能的问题已经消失。我想问问这是否是解决这个问题的正确方法。
我发现VARCHAR可能是用于索引的更好的列类型,因为与TEXT不同,VARCHAR以内联方式存储并为经常访问的数据提供更好的性能。 http://stackoverflow.com/users/144287/brenton-alker – 2013-01-07 15:05:56