사용된 인덱스 콜룬 목록(mysql/mariadb)
EXPLAIN
에 키 길이만 나타냅니다.
예를 들어 다음과 같습니다.
테이블 위에 복잡한 색인이 있습니다.
IDX_KEY (col1, col2, col3)
(모든 열이 정수 유형이라고 가정합니다.)
키 길이 ("최소" 출력에서) = 4이면col1
의IDX_KEY
index는 쿼리에서 사용됩니다.
8이면col1
그리고.col2
.
12인 경우 인덱스의 모든 열이 사용됩니다.
질문: 열 목록을 계산하지 않고 결정할 수 있는 방법이 있습니까?
업데이트:
실제 테이블에는 많은 필드 및 인덱스가 있습니다.단, 예를 들어 다음과 같은 정의를 내립니다.CREATE TABLE `tbl` (`col1` unsigned int not null,`col2` unsigned int not null,`col3` unsigned int not null, primary key (`col1`,`col2`,`col2`));
그런 다음 다음과 같이 설명할 수 있습니다(인덱스에서 열을 하나만 사용하는 경우).
"id" "select_type" "table" "type" "possible_keys" "key" "key_len" "ref" "rows" "Extra"
"1" "PRIMARY" "tbl" "range" "PRIMARY" "PRIMARY" "4" \N "1" ""
사용하는 스토리지 엔진 및 MariaDB 버전에 따라 다르므로 키 길이에 의존하는 것은 의미가 없습니다.현재 MariaDB 버전(10.5)과 InnoDB에서는 키 길이는 4가 아니라 5입니다.
Optimizer에서 자세한 정보를 얻으려면 Analyze 명령을 사용해야 합니다.이 기능을 FORMAT=JSON(MariaDB 10.1부터 사용 가능)과 함께 사용하면 사용된 키를 포함하여 몇 가지 세부 정보를 얻을 수 있습니다.
MariaDB [test]> analyze format=JSON select col1,col2,col3 from t2 where col1=1 and col2=2 \G
*************************** 1. row ***************************
ANALYZE: {
"query_block": {
"select_id": 1,
"r_loops": 1,
"r_total_time_ms": 0.082303568,
"table": {
"table_name": "t2",
"access_type": "ref",
"possible_keys": ["col1"],
"key": "col1",
"key_length": "10",
"used_key_parts": ["col1", "col2"],
"ref": ["const", "const"],
"r_loops": 1,
"rows": 1,
"r_rows": 1,
"r_table_time_ms": 0.027733218,
"r_other_time_ms": 0.041487106,
"filtered": 100,
"r_filtered": 100,
"using_index": true
}
}
}
1 row in set (0.001 sec)
부록:Rick James의 코멘트를 못 봤는데EXPLAIN FORMAT=JSON
는 동작합니다.사용한 키만 필요한 경우 이 명령을 사용해야 합니다.
언급URL : https://stackoverflow.com/questions/64098821/list-of-used-index-coluns-mysql-mariadb
'source' 카테고리의 다른 글
jQuery에서 Ajax-requests와 함께 FormData 개체를 전송하려면 어떻게 해야 합니까? (0) | 2023.01.09 |
---|---|
Node.js에서 SQL 주입 방지 (0) | 2023.01.09 |
PHP - 이미지를 URL에서 직접 서버에 복사 (0) | 2022.12.25 |
PHP 작업 비동기 실행 (0) | 2022.12.25 |
Windows의 MariaDB - 시작 도움말? (0) | 2022.12.25 |