Requetes SQL : solution la plus rapide ?

WRInaute passionné
Bonjour,

Voilà, j'ai un forum et certains topics commencent par le tag [actualite].

Je vais faire une requête pour afficher uniquement les topics qui commencent par ce tag.

Qu'est-ce qui est le plus rapide selon vous :

1) Faire un premier tri très rapide, seulement sur le premier caractère, en l'occurence "[" et puis ensuite trier dans le tableau obtenu les résultats qui correspondent, sachant que j'ai des tags [actualite] mais aussi [vidéos] etc... ?

2) Ou alors faire une requête un peu plus complexe qui ramène seulement les tuples qui commencent par le tag [actualite] ?
 
WRInaute passionné
J'aurais utilisé dès le départ un champ dédié au tag, afin d'en permettre l'indexation :D

Autre solution : mettre à jour à interval régulier une seconde table, qui ne contiendrait que l'ID des topics en question.
Les "like" pour ma part je ne m'en sert que pour les recherches, surtout pas dans l'usage courant du site.

Après ça dépend du volume aussi, selon la taille du forum pas besoin de s'embêter et un like remplira parfaitement son rôle.
 
WRInaute passionné
Code:
J'aurais utilisé dès le départ un champ dédié au tag, afin d'en permettre l'indexation Very Happy
j'ai ai pensé, mais c'est un forum IPB, pas trop envie de mettre le nez dans leur code.
Autre solution : mettre à jour à interval régulier une seconde table, qui ne contiendrait que l'ID des topics en question.
Pas bête, mais pour l'affichage instantané des nouveaux topics, ça va pas être possible alors je crois.

Les "like" pour ma part je ne m'en sert que pour les recherches, surtout pas dans l'usage courant du site.
La requête avec like% comme le suggère YoyoS, elle s'arrête au premier caractère ? J'ai un doute idiot d'un coup.

Les "like" pour ma part je ne m'en sert que pour les recherches, surtout pas dans l'usage courant du site.
Pour l'instant il est vide :lol:
 
WRInaute accro
Si ton champ est indexé, un seul like ne devrait pas être très long. Et oui like '[categorie]%' va te selectionner tous les [categorie]xxxxxxxxxxxx...
 
WRInaute passionné
Ce que je voulais dire, c'est est-ce que ça va pas me sélectionner les .................[category].... aussi ?

Même si le cas ne se produit jamais, la question théorique reste posée.
 
Nouveau WRInaute
Bonjour,

Meeuuuhhh a dit:
Ce que je voulais dire, c'est est-ce que ça va pas me sélectionner les .................[category].... aussi ?

Même si le cas ne se produit jamais, la question théorique reste posée.

Non. un like '%[tag]%' lui le fera, mais ne pourra plus utiliser l'index et sera donc beaucoup plus long.

Mais l'idéal est qd meme d'avoir ta colonne tag toute seule. Si tu peut pas modifier l'applicatif, un trigger dans la base peut faire l insertion : à chaque insert dans la table sujet, faire un insert dans ta colonne.

MS
 
WRInaute passionné
En français on dit "déclencheur" :wink:

Un déclancheur, comme son nom l'indique, permet de déclancher une opération lorsqu'un événement se produit sur une table :lol:


Edité (correction de l'orthographe)
:oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:
Meeuuuhhh a dit:
Eh peut-être même que l'on dit déclencheur :wink:

Tu as le droit de me donner 10 coups de fouets :mrgreen:
 
WRInaute passionné
Eh peut-être même que l'on dit déclencheur :wink:

En effet j'aurais pu y penser.

Mais je vois pas le truc, ça se bidouille dans la base de donnée ou quoi 8O
 
WRInaute passionné
Oui c'est dans la base de données, et c'est tout l'intérêt : comme l'a indiqué mementosql cela évite d'avoir à modifier l'application.

En gros tu indiques à MySQL d'exécuter un traitement particulier à chaque insertion/suppression/modification dans la table en question.
 
Discussions similaires
Haut