MYSQL教程mysql索引教程之哈希索引
《MYSQL教程mysql索引教程之哈希索引》要点: MYSQL必读本节内容: MYSQL必读哈希索引(Hash Index)建立在哈希表的基础上,它只对使用了索引中的每一列的精确查找有用. MYSQL必读在mysql中,只有memory存储引擎支持显式的哈希索引.如果多个值有相同的哈希码,索引就会把行指针以链表的方式保存在哈希表的同一条记录中. MYSQL必读哈希索引的细节还有很多,由于myISAM和innodb并不支持,所以在这里不详解. MYSQL必读下面着力讲解建立自己的哈希索引 MYSQL必读想法非常简单,在标准的B-Tree索引上创建一个伪哈希索引.它和真正的哈希索引不是一回事,因为它还是使用B-Tree索引进行查找.然而,它将会使用键的哈希值进行查找,而不是键自身.你所要做的事情就是在where子句中手动地定义哈希函数. MYSQL必读例子:URL查找. MYSQL必读但是,如果移除掉url列上的索引并且给表添加一个被索引的url_src列,就可以按照下面的方式进行查询: MYSQL必读mysql查询优化器注意到url_src列上有很小的,选择性很高的索引,并且它会使用里面的值进行索引查找.即使有几列相同的url_src值,也很容易进行精确的对比来确定需要的行.替代方案是把完整的URL索引为字符串,它要慢很多. MYSQL必读这个办法的一个缺点就是要维护哈希值. ??? id int unsigned NOT NULL auto_increment,? ??? url varchar(255) NOT NULL,? ??? url_src int unsigned NOIT NULL DEFAULT 0,? ??? PRIMARY KEY(id)? );? ? MYSQL必读接下来创建触发器.我们先暂时更新一下命令分隔符,这样就可以在触发器中使用分号: CREATE TRIGGER pseudohash_src_ins BEFORE INSERT ON pseudohash FOR EACH ROW BEGIN SET NEW.url_src = crc32(NEW.url);? END;? |? CREATE TRIGGER pseudohash_src_upd BEFORE UPDATE ON pseudohash FOR EACH ROW BEGIN SET NEW.url_src = crc32(NEW.url);? END;? |? DELIMITER;? ? MYSQL必读剩下的工作就是验证触发器自动维护了哈希值. (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |