recherche

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

Indexation des requêtes de recherche dynamique basées sur MySQL

C'est mon premier projet donc je suis désolé j'ai beaucoup de questions.

J'essaie de créer un index pour rechercher dans la table Cat ci-dessus.

Cependant, je ne sais pas comment l'appliquer car il existe plusieurs cas pour la clause Where.

SELECT *
FROM CAT
WHERE birth between '2000-01-01' and '2009-12-31';

SELECT *
FROM CAT
WHERE birth between '2000-01-01' and '2009-12-31'
and NAME like '%blue%';

SELECT *
FROM CAT
WHERE NAME like '%blue%'
AND AGE = 5;

Si possible, puis-je créer des index distincts pour l'âge, le nom et la naissance ? Sinon, dois-je créer (âge), (âge, nom), (âge, naissance), (âge, nom, naissance)... pour chaque cas ?

Même après avoir lu le livre, je n'en suis pas sûr, alors je vous laisse avec une question. J'espère que vous ne vous sentez pas mal à ce sujet.

J'utilise MySQL v8.0 innoDB.

Merci !

P粉170438285P粉170438285242 Il y a quelques jours384

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

  • P粉277464743

    P粉2774647432024-03-31 15:26:09

    WHERE birth between '2000-01-01' and '2009-12-31'

    Peut-être queobtiendra de l'aide

    INDEX(birth)

    Mais attention : si birth 的类型为 DATETIME, il vous manque la majeure partie du 31/12.

    and NAME like '%blue%';

    Aucune indexation n'aidera en raison du principal wildcard.

    AND AGE = 5

    La conception architecturale est terrible. Imaginez ce qui se passe lorsqu'un chat fête son anniversaire. Vous devez mettre à jour cette colonne. Utilisez plutôt birthCURDATE() pour effectuer du calcul de date.

    Mais si vous conservez la colonne age, alors ceci pourrait aider :

    INDEX(age)

    J'ai introduit la requête cat.birth dans une autre question aujourd'hui ; Veuillez consulter mon cat.birth 查询;看见。请参阅我的 Index Cookbook 了解有关如何为给定的 SELECT 构建合适的索引。它显示了 WHERE ... AND ... 的哪些情况可以使用“复合”(多列)INDEXIndex Cookbook

    pour plus d'informations sur la façon de créer un donné. SELECT Construisez l'index approprié. Il montre où WHERE ... AND ... peut être utilisé à bon escient en utilisant un INDEX "composite" (multi-colonnes). Aucun de vos exemples ne peut utiliser des index composites. 🎜

    répondre
    0
  • Annulerrépondre