数据库字符串搜索的哈希方法?

时间:2014-06-03 00:46:16

标签: mysql

我有一个MySQL InnoDB数据库,表格中的一个字段是term VARCHAR(255) CHARACTER SET utf8 NOT NULL

这个太大了,因为它可能是255 * 3 = 765个字节。它仍然在InnoDB的767字节范围内,但我希望通过减少索引的大小来加速基于term的搜索以及节省空间。

我没有使用term作为键,而是决定使用term的哈希值。

我应该使用什么样的哈希方法?

编辑:我正在存储搜索字词,例如"如何找到新车"," iphone 5","最好的yugioh卡"等

2 个答案:

答案 0 :(得分:2)

最好的方法是使用MD5:

CREATE TABLE termtable
(
    id int not null auto_increment,
    term VARCHAR(255) CHARACTER SET utf8 NOT NULL,
    termhash char(32) not null,
    primary key (id),
    key (termhash)
);

如果您要查找一个特定值,并且这些值的长度可能超过32个字符,则可以存储哈希值:

INSERT INTO mytable (term,termhash)
VALUES ('a long string',MD5('a long string'));

这样,您只需要哈希值来检索结果

SELECT * FROM termtable WHERE termhash = MD5('a long string');

答案 1 :(得分:1)

MySQL包含MD5算法。生成的哈希只有32个十六进制字符,或16个二进制"字节"。