GBase 8a
性能调优
文章
SQL优化—— hash冲突导致查询慢
发表于2024-12-31 10:44:3073次浏览1个评论
问题现象:现场一个单表精确查询SQL语句,根据3个字段等值查询,空结果集耗时55秒。

此类问题经常出现在创建hash索引的场景下,该表的两列等值查询列都创建了hash global 索引,重复度如下:

根据查询结果CRT_NO列重复值较高,不适合创建hash global 索引。去掉索引之后,相同的查询毫秒级别可以返回结果。
hash冲突:
hash冲突,即哈希冲突,是指在使用哈希函数时,不同的输入(键)通过哈希函数映射到同一个哈希值或者同一个哈希表索引位置的情况。
输入域的无限性和输出域的有限性:
哈希函数的输入可以是任意长度的数据,如字符串、文件、数字等,这些输入的组合是无限的。
哈希函数的输出是一个固定长度的值(通常是固定长度的整数或二进制串),如一个32位的哈希值只有2^32种可能的值。
由于输入域是无限的,而输出域是有限的,根据鸽巢原理,必然会有多个不同的输入映射到同一个输出值,从而产生哈希冲突。
热门帖子
- 12025-12-01浏览数:182763
- 22023-05-09浏览数:25057
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17528