MySql/MariaDB를 사용하여 쿼리에서 직접 인덱스를 사용할 수 있는지 궁금합니다. 타임스탬프/값 쌍이 있는 정렬되지 않은 간단한 테이블이 있다고 가정해 보겠습니다.
으아아아타임스탬프를 추가하여 색인 생성:
으아아아일부 정렬된 타임스탬프 순서에 "빠르게 액세스"할 수 있습니다.
연속된 값에 대한 값의 차이를 제공하는 쿼리를 정의해 보겠습니다.
으아아아분명히 이 쿼리는 조건부이며 비용이 많이 듭니다. 더 편리한 방법은 myindex 열을 테이블에 추가하는 것입니다.
으아아아타임스탬프의 시간순으로 새 열을 채웁니다(예: 일부 PHP 코드를 통해)
새 쿼리가 더 간단하고 저렴해집니다.
으아아아새 열 myindex는 데이터베이스 테이블 인덱스 ind_ts와 다소 유사합니다. (왜) myindex 대신 ind_ts를 사용하는 MySql 구성이 없나요?
MySQL 8.0 또는 MariaDB 10.2(또는 그 이상)를 사용하는 경우
LEAD()
和LAG()
에서는 이전 또는 이후의 행을 쉽게 볼 수 있는 방법을 제공합니다.이전 버전을 사용하고 계시다면 "셀프 조인"을 해주세요. 즉, 테이블
으아아아JOIN
与其自身连接。然后将两个“桌子”对齐,偏移一。这可能需要生成一个带有新的AUTO_INCRMENT
을 임시 테이블로 만들어 쉽게 상쇄할 수 있는 방법을 제공합니다. 이것은 "myindex"에 대한 귀하의 생각보다 약간 더 나을 수도 있습니다.그럼
으아아아(테이블의 첫 번째 행과 마지막 행은 처리되지 않습니다.)
참고:
를 사용할 수 없습니다. 🎜TEMPORARY TABLE
,因为它不能JOINed
자체에는