찾다

 >  Q&A  >  본문

MySql/MariaDB: 쿼리에서 인덱스를 "직접" 사용합니까?

MySql/MariaDB를 사용하여 쿼리에서 직접 인덱스를 사용할 수 있는지 궁금합니다. 타임스탬프/값 쌍이 있는 정렬되지 않은 간단한 테이블이 있다고 가정해 보겠습니다.

으아아아

타임스탬프를 추가하여 색인 생성:

으아아아

일부 정렬된 타임스탬프 순서에 "빠르게 액세스"할 수 있습니다.

연속된 값에 대한 값의 차이를 제공하는 쿼리를 정의해 보겠습니다.

으아아아

분명히 이 쿼리는 조건부이며 비용이 많이 듭니다. 더 편리한 방법은 myindex 열을 테이블에 추가하는 것입니다.

으아아아

타임스탬프의 시간순으로 새 열을 채웁니다(예: 일부 PHP 코드를 통해)

새 쿼리가 더 간단하고 저렴해집니다.

으아아아

새 열 myindex는 데이터베이스 테이블 인덱스 ind_ts와 다소 유사합니다. (왜) myindex 대신 ind_ts를 사용하는 MySql 구성이 없나요?

P粉350036783P粉350036783469일 전636

모든 응답(1)나는 대답할 것이다

  • P粉217629009

    P粉2176290092023-09-16 12:23:26

    MySQL 8.0 또는 MariaDB 10.2(또는 그 이상)를 사용하는 경우 LEAD()LAG()에서는 이전 또는 이후의 행을 쉽게 볼 수 있는 방법을 제공합니다.

    이전 버전을 사용하고 계시다면 "셀프 조인"을 해주세요. 즉, 테이블 JOIN 与其自身连接。然后将两个“桌子”对齐,偏移一。这可能需要生成一个带有新的AUTO_INCRMENT을 임시 테이블로 만들어 쉽게 상쇄할 수 있는 방법을 제공합니다. 이것은 "myindex"에 대한 귀하의 생각보다 약간 더 나을 수도 있습니다.

    으아아아

    그럼

    으아아아

    (테이블의 첫 번째 행과 마지막 행은 처리되지 않습니다.)

    참고: TEMPORARY TABLE,因为它不能JOINed 자체에는

    를 사용할 수 없습니다. 🎜

    회신하다
    0
  • 취소회신하다