mysql支持哪些数据类型?_redis hashtable

mysql支持哪些数据类型?_redis hashtable从8.0.18开始,对等值不能使用索引的Join语句使用Hash Join,之前使用BNL(Block nested loop algorithm);8.0.20移除BNL; 8.0.20 对非等值…

MySQL 支持Hash Join咯

8.0.20 对非等值条件(执行Hash Join再进行过滤(Filter)),笛卡尔积都能使用Hash Join。

CREATE TABLE `t4` (
  `c1` int DEFAULT NULL,
  `c2` int DEFAULT NULL,
  `c3` int DEFAULT NULL,
  `c4` int DEFAULT NULL,
  KEY `c1` (`c1`,`c2`,`c3`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;


CREATE TABLE `t5` (
  `c1` int DEFAULT NULL,
  `c2` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;


delimiter ;;
create procedure load_t5()
    begin
    declare i int;
    set i=0;
    while(i<1000)
    do
       insert into t4(c1,c2,c3,c4) values(i,i,1000-i,i);
       insert into t5(c1,c2) values(i,i);
       set i=i+1;
    end while;
    end;;
delimiter ;
call load_t5();

# 执行Join 查询,对驱动表不能使用索引的查询,8.0开始支持使用Hash Join
root [t37](17:55 | DB102_8.0.20) >desc select t4.c4 from t4,t5 where t4.c3=t5.c1;
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+--------------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra                                      |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+--------------------------------------------+
|  1 | SIMPLE      | t4    | NULL       | ALL  | NULL          | NULL | NULL    | NULL |    8 |   100.00 | NULL                                       |
|  1 | SIMPLE      | t5    | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 1000 |    10.00 | Using where; Using join buffer (hash join) |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+--------------------------------------------+
2 rows in set, 1 warning (0.01 sec)

root [t37](18:01 | DB102_8.0.20) >desc select t4.c4 from t4,t5 where t4.c3=t5.c1 and t4.c1 < 100;
+----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+--------------------------------------------+
| id | select_type | table | partitions | type  | possible_keys | key  | key_len | ref  | rows | filtered | Extra                                      |
+----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+--------------------------------------------+
|  1 | SIMPLE      | t4    | NULL       | range | c1            | c1   | 5       | NULL |    8 |   100.00 | Using index condition                      |
|  1 | SIMPLE      | t5    | NULL       | ALL   | NULL          | NULL | NULL    | NULL | 1000 |    10.00 | Using where; Using join buffer (hash join) |
+----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+--------------------------------------------+
2 rows in set, 1 warning (0.00 sec)

代码100分

内存大小由参数join_buffer_size控制,超过容量将使用磁盘文件,适当调大join_buffer_sizeopen_files_limit参数,避免失败。从8.0.20开始,内存大小是按需分配的,不会一开始就分配参数配置的大小,避免浪费。

官档:

8.2.1.4 Hash Join Optimization

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7587.html

(0)
上一篇 2023-03-18
下一篇 2023-03-18

相关推荐

  • zookeeper3.5.5 centos7 完全分布式 搭建随记 – G「终于解决」

    zookeeper3.5.5 centos7 完全分布式 搭建随记 – G「终于解决」zookeeper3.5.5 centos7 完全分布式 搭建随记 这里是当初在三个ECS节点上搭建hadoop+zookeeper+hbase+solr的主要步骤,文章内容未经过润色,请参考的同学搭

    2023-03-18
    149
  • PostgreSQL版本更新历史

    PostgreSQL版本更新历史PostgreSQL是一款开源的对象-关系型数据库管理系统,其最初的设计目的是提供一个更加完备的SQL实现。

    2024-07-09
    37
  • 从0开始学大数据_何为大数据

    从0开始学大数据_何为大数据随着近些年大数据技术的发展,以Hadoop、Spark为代表的大数据开源项目早已迭代成熟,构建起生态化系统。在这个智能的时代, 不论是否从事大数据开发,掌握大数据的原理和架构也早已成为每个工程师的必备

    2023-04-14
    146
  • redis 集群(文档整理)「建议收藏」

    redis 集群(文档整理)「建议收藏」Redis集群 &#183;Redis集群提供了一种运行Redis安装的方法,在该安装中,数据会在多个Redis节点之间自动分片。 Redis集群在分区期间还提供了一定程度的可用性,这实际上是

    2023-03-13
    134
  • Python字符串转义

    Python字符串转义随着Python的广泛应用,越来越多的开发者开始使用Python进行编程,而字符串操作是编程中最常见的操作之一。在Python中,字符串转义是必不可少的部分。本文将围绕这一话题展开探讨。

    2024-07-29
    28
  • [mysql]错误解决之”Failed to start MySQL Server”「终于解决」

    [mysql]错误解决之”Failed to start MySQL Server”「终于解决」无论你安装过多少次mysql,仍然会出现各种各样的错误,既然出现了,就想办法解决它:OK! 接下来教大家怎样查看错误日志,去解决懵逼的代码错误。 错误: 经过一些列的 重启操作、查看错误详情,并不能精

    2023-03-15
    144
  • 如何使用doctest测试Python代码

    如何使用doctest测试Python代码Python是一门非常强大的编程语言,很多人都使用它进行开发。使用Python编写的代码可能会比其他语言更容易出现错误,这也是为什么开发人员需要使用工具来测试代码。doctest是Python中一个非常重要的测试工具。

    2024-05-08
    56
  • MySQL数据库基础_易码黄了吗

    MySQL数据库基础_易码黄了吗大家好!我是黄啊码,今天没继续select * 了吧,如果还继续,那接下来的课程先别学,回去好好把之前的课程重复复习一遍,学明白了我们再会?废话不多说,学今天的课程之前我们先来说说这几个词是怎么个执行

    2023-05-27
    131

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注