您的位置:首页 > 数据库 > MySQL

mySql 哈希索引的创建

2016-02-26 17:28 465 查看
① 索引适合创建于出现重复数据少的列名上,列的值冲突越多,代价越大。

② SELECT ID FROM 表名 WHERE URL ="http://www.mysql.com";

如果要添加索引的列值很长,可以在表中添加列,并用SRC32做哈希,将很长的字符串转化成数字。

例:UPDATE 表名 SET 表名.url_src = SRC32(表名.url);

表中数据是这样的:
 URL url_src
 http://www.mysql.com 1560514994
这样,查询就可以进行优化了:

SELECT ID FROM 表名WHERE URL="http://www.mysql.com" AND url_src=SRC32("http://www.mysql.com");

查询的时候条件中必须带着哈希值和对应的列值。

原因:当数据量很大时哈希函数SRC32()会出现大量的哈希冲突。

另外,除了使用SRC32()做哈希函数外,还可以用FNV64()作为哈希函数,哈希值64位,速度快,且冲突比SRC32()少很多。

※采用上述这种方式,不要用SHA1()和MD5()作为哈希函数。

原因:计算出来的哈希值字符串很长,浪费大量空间,比较是也很慢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: