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中连接查询采用的是嵌套循环连接算法,驱动表会被访问一次,被驱动表可能会被访问多次,所以对于两表连接查询来说,它的查询成本由下边两个部分构成:
-
单次查询驱动表的成本
-
多次查询被驱动表的成本(具体查询多少次取决于对驱动表查询的结果集中有多少条记录)
对驱动