반응형
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
반응형
'itsource' 카테고리의 다른 글
REST API에 대한 Larabel DB 쿼리가 매우 느립니다. (0) | 2022.09.25 |
---|---|
레일 3 액티브 레코드:연관 개수별 주문 (0) | 2022.09.25 |
안쪽을 클릭할 때 드롭다운 메뉴가 닫히지 않도록 합니다. (0) | 2022.09.25 |
디렉토리의 모든 파일을 루프하는 PHP 스크립트? (0) | 2022.09.25 |
DBeaver를 사용하여 로컬 호스트의 MariaDB에 연결할 수 없음 (0) | 2022.09.25 |