Maison  >  Questions et réponses  >  le corps du texte

Optimiser les index de table dans MySQL

<p>J'ai le tableau suivant (recherches de suivi) : </p> <pre class="brush:sql;toolbar:false;">CREATE TABLE `recherches` ( `id` int(10) non signé NOT NULL AUTO_INCREMENT, `supprimé` tinyint(1) non signé NOT NULL, `query` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `userId` int(10) non signé NOT NULL, `connectionId` int(10) non signé NOT NULL, `pluginId` int(10) non signé NOT NULL, CLÉ PRIMAIRE (`id`), CLÉ `clé, supprimée` (`publicId`,`supprimé`), CLÉ `supprimé, userId` (`supprimé`,`userId`), CLÉ `supprimé,connectionId,pluginId` (`supprimé`,`connectionId`,`pluginId`) ) MOTEUR=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ≪/pré> <p>Parfois, j'exécute une requête qui renvoie toutes les requêtes effectuées par un utilisateur spécifique. Dans ce cas, j'ai un index avec les colonnes suivantes : supprimé, userId. <code></code></p> <p>D'autres fois, j'exécute des requêtes qui renvoient toutes les requêtes exécutées par une "connexion" et un "plug-in" spécifiques. Dans ce cas, j'ai un index avec les colonnes suivantes : supprimé, connectionId, pluginId. <code></code></p> <p>La taille des index augmente considérablement. J'essaie donc de comprendre comment mieux les optimiser. </p> <p>Est-il utile de fusionner ces deux index en un seul ? Par exemple, il peut contenir les colonnes suivantes : <code>deleted</code>,<code>userId</code>,<code>connectionId</code>,<code>pluginId</code>< ;/p> <p>Je ne sais pas si cela réduira la taille de l'index tout en répondant aux besoins de la requête. </p>
P粉841870942P粉841870942452 Il y a quelques jours547

répondre à tous(1)je répondrai

  • P粉269847997

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

    Vous pouvez utiliser un index plusieurs fois, mais uniquement de gauche à droite, sans sauter aucun champ. Par exemple : index (champ A, champ B, champ C), alors vous pouvez utiliser cet index pour interroger le champ A, ou interroger le champ A et le champ B, ou interroger le champ A, le champ B et le champ C, mais il ne peut pas être utilisé Accès au champ A et au champ C ou au champ B et au champ C.

    Ceci ne s'applique donc pas à votre requête.


    répondre
    0
  • Annulerrépondre