Quelle est une alternative à l'opérateur LIKE lors de l'interrogation d'un grand nombre de lignes ?
P粉191610580
P粉191610580 2023-09-02 13:02:15
0
1
513
<p>J'ai une table avec une colonne qui stocke des chaînes aléatoires comme ceci : </p> <pre class="brush:php;toolbar:false;">example_id = qwhs77gt65g7*</pre> <p>Certaines données de la colonne comportent désormais un astérisque (*), tandis que d'autres n'en comportent pas. </p> <p>Je dois sélectionner ceux qui le sont. J'utilise cette requête : </p> <pre class="brush:php;toolbar:false;">SELECT example_id FROM example_tbl WHERE example_id LIKE '%*%'</pre> <p>Maintenant, cela ne poserait normalement pas de problème, mais j'interroge des millions de lignes et d'après ce que je peux dire, l'opérateur LIKE affecte mes performances. La requête prendra plusieurs heures</p> <p>Ma question est la suivante : quelle est l'alternative à l'opérateur LIKE ? </p> <p>PS L'astérisque est toujours à la fin de la chaîne. Je ne sais pas si cela aide</p>
P粉191610580
P粉191610580

répondre à tous(1)
P粉063862561

Puisque vous avez mentionné "l'astérisque est toujours à la fin" alors vous pouvez essayer

其中 example_id LIKE '%*'.

Cela trouvera n'importe quelle valeur se terminant par "*"

ou

consiste à rechercher une sous-chaîne dans une colonne d'un tableau.

Une façon d'y parvenir est d'utiliser la fonction instr(), qui prend 3 paramètres.

Syntaxe : instr(rank, string, sub_string)

Classement :

  1. Expression entière, donnant la première position correspondante La recherche de sous-chaîne commence par le caractère de la chaîne.
  2. String : String est votre texte.
  3. sub_string : la sous-chaîne que vous recherchez À la recherche de. Si instr() n'est pas trouvé, renvoie 0 correspondre.

Maintenant, comment appliquer cela à la table ? Puisque la fonction instr() est x3, elle est simple à appliquer.

Exemple : filtre[ZCT] où instr(1,ALLOTEDTO,"Ram") 0.

Où 1 est la position de départ pour trouver la sous-chaîne, ALLOTEDTO est le nom de la colonne composée de chaînes et le dernier paramètre est la sous-chaîne elle-même. Cela vous donnera tous les enregistrements de la table où la colonne ALLOTEDTO contient la sous-chaîne "Ram"

C'est équivalent à.

Sélectionnez * dans ZCT où ALLOTEDTO est similaire à "%Ram%".

Remarque : La fonction Instr() est sensible à la casse, utilisez donc toujours les fonctions majuscules ou minuscules.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal