Heim  >  Fragen und Antworten  >  Hauptteil

Tabellenindizes in MySQL optimieren

<p>Ich habe die folgende Tabelle (Tracking-Suchen): </p> <pre class="brush:sql;toolbar:false;">CREATE TABLE `searches` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, „gelöscht“ 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, PRIMÄRSCHLÜSSEL („id“), SCHLÜSSEL `key,deleted` (`publicId`,`deleted`), SCHLÜSSEL `deleted,userId` (`deleted`,`userId`), SCHLÜSSEL `deleted,connectionId,pluginId` (`deleted`,`connectionId`,`pluginId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; </pre> <p>Manchmal führe ich eine Abfrage aus, die alle von einem bestimmten Benutzer durchgeführten Abfragen zurückgibt. In diesem Fall habe ich einen Index mit den folgenden Spalten: gelöscht, Benutzer-ID. <code></code></p> <p>In anderen Fällen führe ich Abfragen aus, die alle von einer bestimmten „Verbindung“ und einem bestimmten „Plugin“ ausgeführten Abfragen zurückgeben. In diesem Fall habe ich einen Index mit den folgenden Spalten: gelöscht, Verbindungs-ID, Plugin-ID. <code></code></p> <p>Die Größe der Indizes nimmt erheblich zu, daher versuche ich zu verstehen, wie ich sie besser optimieren kann. </p> <p>Ist es sinnvoll, diese beiden Indizes zu einem zusammenzuführen? Es könnte beispielsweise die folgenden Spalten enthalten: <code>deleted</code>,<code>userId</code>,<code>connectionId</code>,<code>pluginId</code>< ;/ p> <p>Ich bin mir nicht sicher, ob dadurch die Größe des Index verringert wird und gleichzeitig die Abfrageanforderungen erfüllt werden. </p>
P粉841870942P粉841870942452 Tage vor549

Antworte allen(1)Ich werde antworten

  • P粉269847997

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

    您可以多次使用一个索引,但只能从左到右使用,不能跳过任何字段。例如:索引(字段A,字段B,字段C),那么您可以使用该索引进行字段A的查询,或者字段A和字段B的查询,或者字段A、字段B和字段C的查询,但不能用于字段A和字段C或字段B和字段C的访问。

    因此,这对于您的查询是不适用的。


    Antwort
    0
  • StornierenAntwort