RANGE 유형이 아닌 대신 INDEX 유형을 사용하는 날짜/시간 필드의 MySQL 인덱스
이 인덱스가 왜 사용되지 않는지 알고 싶습니다.RANGE
입력, 대신INDEX
:
색인:
CREATE INDEX myindex ON orders(order_date);
쿼리:
EXPLAIN
SELECT order_date FROM orders
WHERE order_date BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59';
출력에서TYPE
열이 다음으로 설정됨INDEX
제 생각에는 인덱스에서 날짜가 첫 번째보다 큰 첫 번째 레코드를 찾은 다음 링크된 목록을 거쳐야 하지만, 만약 그렇다면 type은range
,것은 아니다.INDEX
.
게다가, 또한 사용합니다.force index(report_ordini_per_utente_in_un_periodo)
에서from
절, 형식은 그대로입니다.index
MariaBD 10.1.43을 사용합니다.
일종의 버그인 것으로 밝혀졌습니다. 왜냐하면 제 데이터베이스에 있는 모든 기록이 그 범위 안에 있었기 때문입니다. 그래서 그것은 분명히 전체 색인을 거쳐야 하고, 그것이 왜 그것을 표시하는지에 대한 것입니다.TYPE
~하듯이INDEX
대신에RANGE
더 이상한 것은, 쿼리가order_date between X and Y
모든 레코드의 날짜가 X보다 크지만 모든 레코드의 날짜가 Y보다 낮은 것은 아닐 경우, 다음과 같이 표시합니다.INDEX
그리고 아닌RANGE
제공한 쿼리에는 열이 하나만 있습니다.그리고 그 열은 색인에 있습니다.지수는 "커버링"입니다.그러므로EXPLAIN
라고 말할 것입니다Using index
.
표의 날짜 범위는 어떻게 됩니까?
추가적인 논의를 위해, 제공해 주십시오.SHOW CREATE TABLE
그리고 모든 것들EXPLAIN
산출량.당신의 산문에는 미묘한 것들이 빠져 있을 수 있습니다.
언급URL : https://stackoverflow.com/questions/59604913/mysql-index-on-datetime-field-not-going-range-type-instead-is-using-index-type
'programing' 카테고리의 다른 글
preg_match를 사용하여 배열에서 검색하는 방법은 무엇입니까? (0) | 2023.09.04 |
---|---|
스위치의 "켜기" 색상 변경 (0) | 2023.09.04 |
도커 컴포지션에서 빌드 인수를 정의하는 방법은 무엇입니까? (0) | 2023.09.04 |
예외를 던질 때 종료 코드를 설정하는 방법 (0) | 2023.09.04 |
django - MySQL 데이터베이스에 저장되지 않은 레코드이지만 AutoIncrement가 증가합니다. (0) | 2023.09.04 |