舷Kelvin 2023-02-07 22:49 采纳率: 61.5%
浏览 15
已结题

mysql物化表(临时表)时,如果是多列的表子查询,依据哪些数据来创建哈希索引?

mysql物化表(临时表)时,如果是多列的表子查询,依据哪些数据来创建哈希索引?

SELECT * FROM t1 WHERE (m1, n1) IN (SELECT m2, n2 FROM t2);

类似这样多列比较的表子查询,每行的哈希索引依据哪个值来创建?

个人推测,既然是仅用于这条语句的辅助用表,那就依照特定需要针对性的创建索引,也即m2和n2两列联合起来计算哈希值。而不是m2、n2分别各自,或者整行数据一起计算。

因为是学习中产生的疑问,但书上没有说得这么细,网上搜搜也没人提到这个,所以发个问题确认一下是不是与我推测的情形一致,如果推测不对也请告知,谢谢大家。

  • 写回答

1条回答 默认 最新

  • 2301_76426662 2023-02-07 22:58
    关注

    可以依据表中最常用的查询列来创建哈希索引。
    可以尝试以表中最多查询列值作为键值,将查询记录存储在哈希表中。哈希索引可以提供速度最快的访问速度,而哈希表将所有记录存储在同一结构中,以快速响应查询,但是它可能会因为索引越来越大而变得慢。
    例如,如果创建哈希索引时使用如下公式:

    hash_table[key] = record;

    其中,key 为要搜索的值,而 record 为查询结果。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月15日
  • 修改了问题 2月7日
  • 创建了问题 2月7日