itsource

MySQL 업데이트가 인덱스 조건 푸시다운을 지원하지 않습니까?

mycopycode 2022. 9. 25. 00:23
반응형

MySQL 업데이트가 인덱스 조건 푸시다운을 지원하지 않습니까?

CREATE TABLE `t2` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) DEFAULT NULL,
  `c` char(10) DEFAULT NULL,
  `d` varchar(256) DEFAULT NULL,
  `e` text,
  KEY `ii1` (`a`,`b`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

sql1: update t2 set b = 3 where a = 1;
sql2: select b from t2 where a = 1;

sql2는 인덱스 조건 푸시다운을 사용하지만 sql1은 사용하지 않습니다.그런데 왜 엔진과 서버 변환 사이의 데이터 형식일까요?

mysql> explain select b from t2 where a = 1;
+----+-------------+-------+------------+------+---------------+------+---------+-------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref   | rows | filtered | Extra       |
+----+-------------+-------+------------+------+---------------+------+---------+-------+------+----------+-------------+
|  1 | SIMPLE      | t2    | NULL       | ref  | ii1           | ii1  | 5       | const |    1 |   100.00 | Using index |
+----+-------------+-------+------------+------+---------------+------+---------+-------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)

mysql> explain update t2 set b = 3 where a = 1;
+----+-------------+-------+------------+-------+---------------+------+---------+-------+------+----------+------------------------------+
| id | select_type | table | partitions | type  | possible_keys | key  | key_len | ref   | rows | filtered | Extra                        |
+----+-------------+-------+------------+-------+---------------+------+---------+-------+------+----------+------------------------------+
|  1 | UPDATE      | t2    | NULL       | range | ii1           | ii1  | 5       | const |    1 |   100.00 | Using where; Using temporary |
+----+-------------+-------+------------+-------+---------------+------+---------+-------+------+----------+------------------------------+
1 row in set (0.00 sec)

메모Using index쿼리가 커버링 인덱스를 사용하고 있음을 나타냅니다.즉, SELECT 쿼리는 인덱스만 읽어 결과를 반환할 수 있습니다.인덱스와 인덱스가 속한 테이블을 동시에 업데이트해야 하므로 INSERT/UPDATE/DELETE에서는 이 작업을 수행할 수 없습니다.

메모Using index condition인덱스 조건 푸시다운용입니다.이는 일부 사전 필터링을 스토리지 엔진에 위임하는 기능입니다.

EXPLINE 출력의 단어는 비슷하지만 이 두 주기는 전혀 다른 기능을 나타냅니다.

언급URL : https://stackoverflow.com/questions/66379711/mysql-update-not-support-index-condition-pushdown

반응형