0
点赞
收藏
分享

微信扫一扫

MySQL从入门到精通50讲(三十七)-连接查询成本

深夜瞎琢磨 2022-04-26 阅读 61

Condition Filtering介绍

因为要做连接查询,所以我们创建一张和table_query_cost表一模一样的表table_query_cost2。

CREATE TABLE `table_query_cost` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `key1` VARCHAR(100),
    `key2` INT(11) ,
    `key3` VARCHAR(100),
    `key_part1` VARCHAR(100),
    `key_part2` VARCHAR(100),
    `key_part3` VARCHAR(100),
    `common_field` VARCHAR(100),
    PRIMARY KEY (`id`),
    KEY idx_key1 (`key1`),
    UNIQUE KEY uq_key2 (`key2`),
    KEY idx_key3 (`key3`),
    KEY idx_key_part(`key_part1`, `key_part2`, `key_part3`)
) Engine=InnoDB;

MySQL中连接查询采用的是嵌套循环连接算法,驱动表会被访问一次,被驱动表可能会被访问多次,所以对于两表连接查询来说,它的查询成本由下边两个部分构成:

  • 单次查询驱动表的成本

  • 多次查询被驱动表的成本(具体查询多少次取决于对驱动表查询的结果集中有多少条记录)

对驱动

举报

相关推荐

0 条评论