>  Q&A  >  본문

MySQL에서 테이블 인덱스 최적화

<p>다음 표(검색 추적)가 있습니다. </p> <pre class="brush:sql;toolbar:false;">CREATE TABLE `검색`( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `삭제`tinyint(1) unsigned NOT NULL, `query` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `userId` int(10) unsigned NOT NULL, `connectionId` int(10) unsigned NOT NULL, `pluginId` int(10) unsigned NOT NULL, 기본 키(`id`), KEY `키,삭제됨` (`publicId`, `삭제됨`), KEY `삭제됨,userId` (`삭제됨`,`userId`), KEY `삭제됨,connectionId,pluginId` (`삭제됨`,`connectionId`,`pluginId`) ) 엔진=InnoDB 기본 CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; </pre> <p>가끔 특정 사용자가 수행한 모든 쿼리를 반환하는 쿼리를 실행합니다. 이 경우 삭제됨, userId 열이 포함된 인덱스가 있습니다. <코드></code></p> <p>어떤 경우에는 특정 "연결" 및 "플러그인"에 의해 실행된 모든 쿼리를 반환하는 쿼리를 실행합니다. 이 경우 삭제됨, 연결 ID, 플러그인 ID 열이 포함된 인덱스가 있습니다. <코드></code></p> <p>인덱스의 크기가 크게 증가하고 있어 인덱스를 더 잘 최적화하는 방법을 알아보고 있습니다. </p> <p>이 두 인덱스를 하나로 병합하는 것이 가치가 있나요? 예를 들어, 다음 열이 포함될 수 있습니다: <code>deleted</code>,<code>userId</code>,<code>connectionId</code>,<code>pluginId</code>< ;/p> <p>이렇게 하면 쿼리 요구 사항을 충족하면서도 인덱스 크기가 줄어들지는 잘 모르겠습니다. </p>
P粉841870942P粉841870942452일 전546

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

  • P粉269847997

    P粉2698479972023-07-26 00:56:46

    색인을 여러 번 사용할 수 있지만 필드를 건너뛰지 않고 왼쪽에서 오른쪽으로만 사용할 수 있습니다. 예: 인덱스(필드 A, 필드 B, 필드 C), 이 인덱스를 사용하여 필드 A를 쿼리하거나 필드 A와 필드 B를 쿼리하거나 필드 A, 필드 B와 필드 C를 쿼리할 수 있지만 사용할 수는 없습니다. 필드 A와 필드 C 또는 필드 B와 필드 C에 액세스합니다.

    따라서 귀하의 문의에는 해당되지 않습니다.


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