MySQL에서 JSON 인덱싱 - aarondfrancis

원본 트윗 출처











아론 프랜시스


@aarondfrancis






사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다. MySQL로 JSON 열을 인덱싱하는 것은 완전히 가능합니다! 다소 까다롭지만 그만한 가치가 있습니다. 방법을 살펴보겠습니다...


오후 15:51 - 2022년 10월 4일









사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다.

MySQL을 사용하여 JSON 열을 인덱싱하는 것은 완전히 가능합니다!

다소 까다롭지만 그만한 가치가 있습니다.

방법을 살펴보겠습니다...

기사 형식으로 읽으려면 블로그에 전체 내용을 작성했습니다.





MySQL에서 JSON 인덱싱



생성된 열 및 기능 인덱스를 사용하여 MySQL에서 JSON을 인덱싱하는 방법을 알아봅니다.


  <div class="color-secondary fs-s flex items-center">
      <img
        alt="favicon"
        class="c-embed__favicon m-0 mr-2 radius-0"
        src="https://planetscale.com/favicon.svg"
        loading="lazy" />
    planetscale.com
  </div>
</div>


.

사람들이 MySQL에서 JSON을 색인화할 수 없다고 말하는 이유는 JSON을 직접 색인화할 수 없기 때문에 간접적으로 색인화해야 하기 때문입니다.

다른 데이터베이스에는 이에 도움이 되는 GIN 인덱스가 있지만 MySQL에는 이러한 인덱스가 없으므로 두 가지 옵션이 있습니다.

• 생성된 열(MySQL 5.7)
• 기능 인덱스(MySQL 8.0.13)

먼저 생성된 열을 살펴보겠습니다!

생성된 열은 계산, 계산 또는 파생 열과 같습니다.

MySQL은 사용자가 지정한 표현식에 따라 열을 최신 상태로 유지합니다.

JSON 열에서 경로를 뽑아 적절한 최상위 열로 만들 수 있습니다.

이제 다른 열과 마찬가지로 인덱스를 추가할 수 있습니다! 붐, 방금 MySQL에서 JSON을 인덱싱했습니다.

그래도 좋아집니다(믿을 수 있다면!)

이것에 대한 좋은 부분은 이름이 지정된 새 열을 사용할 필요가 없다는 것입니다.

MySQL은 생성된 열과 일치하는 표현식이 있을 때 인덱스를 사용할 만큼 똑똑합니다.

어떤 이유로든 애플리케이션에서 액세스 패턴을 제어할 수 없는 경우 매우 유용합니다.

MySQL 8.0.13 이상을 사용 중인 경우 "기능 인덱스"를 사용할 수 있습니다.

기본적으로는 동일하지만 생성된 열을 직접 수동으로 생성하지 않습니다. 표현식을 인덱싱하기만 하면 됩니다.

그러나 주로 데이터 유형 및 데이터 정렬과 관련하여 몇 가지 불행한 문제가 있습니다.

내부적으로 MySQL은 이 기능 인덱스에 대해 숨겨진 생성 열을 사용할 것입니다.

하지만! MySQL은 표현식에서 데이터 유형과 데이터 정렬을 추론하기만 하므로 색인과 일치하도록 도와야 합니다. 그렇지 않으면 사용되지 않습니다.

(솔직히 이 부분이 골치 아프다.)

생성된 열을 직접 제어하면 조금 더 쉽지만 생성된 열이 마음에 들지 않을 수 있습니다.

어떤 방법을 사용하든 완전히 허용됩니다. 어떤 방법을 사용하는지는 귀하에게 달려 있습니다!

계속해서 확신을 가지고 JSON을 인덱싱하십시오.

당신이 이것을 즐겼다면, 나는 당신에게 좋은 소식이 있습니까? 이것이 어디에서 왔는지 더 많이 있습니다.









아론 프랜시스


@aarondfrancis






이제 소스로 바로 이동하겠습니다. MySQL 문서의 두 장을 인쇄하고 제본했습니다! 이것은 "내가 들어본 것 중 가장 괴상한 것"( ) 및 "정말 똑똑하고 좋은 생각"으로 설명되는 움직임입니다. (나)


오후 21:42 - 2022년 7월 9일












이와 같은 게시물을 더 보려면 클릭하세요.

좋은 웹페이지 즐겨찾기