Get the App
SLTechnology News&Howtos  ›  Database  › 

MySQL can only use the leftmost part of the defined index

Shulou Source: shulou.com Published: 2022-06-01 18:33:34 09月23日 Update

Experimental environment: MySQL 5.7.17

1. The table structure is as follows. Create a primary key in the id,name,tx column.

Mysql > show create table txtx +- -+ | Table | Create Table | | +-+- - -- + | txtx | CREATE TABLE `txtx` (`id` int (11) NOT NULL `name` char (2) NOT NULL, `tx` char (3) NOT NULL, `id1` int (11) DEFAULT NULL, PRIMARY KEY (`id`, `name`) `tx`) ENGINE=InnoDB DEFAULT CHARSET=gbk | +-+- -+ 1 row in set (0.00 sec)

2. View the execution plan

Mysql > explain select * from txtx where id=1 and id1 = 1 and tx='tx' +- -+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | + -- + | 1 | SIMPLE | txtx | NULL | ref | PRIMARY | PRIMARY | 4 | const | 1 | 33.33 | Using where | +- -- + 1 row in set 1 warning (0.00 sec)

As you can see from the above execution plan, although the query uses the id and tx columns in the where statement, only the id column is used because MySQL can only use the leftmost part of the defined index.

Tags: Index cause environment structure statement part experiment query Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno macOS vpn Apple MySQL Docker