Requetes SQL : solution la plus rapide ?

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


Meeuuuhhh
WRInaute passionné
WRInaute passionné
 
Messages: 2046
Inscription: 8 Jan 2007

Requetes SQL : solution la plus rapide ?

Message le Sam Aoû 23, 2008 0:54

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] ?


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3835
Inscription: 14 Sep 2006

Message le Sam Aoû 23, 2008 7:16

Faire un like '[actualite]%' directement ?


Bool
WRInaute passionné
WRInaute passionné
 
Messages: 1290
Inscription: 26 Fév 2004

Message le Sam Aoû 23, 2008 9:44

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.


Meeuuuhhh
WRInaute passionné
WRInaute passionné
 
Messages: 2046
Inscription: 8 Jan 2007

Message le Sam Aoû 23, 2008 11:52

Code: Tout sélectionner
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:


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3835
Inscription: 14 Sep 2006

Message le Sam Aoû 23, 2008 11:54

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...


Meeuuuhhh
WRInaute passionné
WRInaute passionné
 
Messages: 2046
Inscription: 8 Jan 2007

Message le Sam Aoû 23, 2008 12:55

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.

mementosql
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 2
Inscription: 22 Aoû 2008

Message le Sam Aoû 23, 2008 13:08

Bonjour,

Meeuuuhhh a écrit: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


Meeuuuhhh
WRInaute passionné
WRInaute passionné
 
Messages: 2046
Inscription: 8 Jan 2007

Message le Sam Aoû 23, 2008 15:27

Je sais même pas ce que c'est, un trigger... Snif


fandecine
Modérateur
Modérateur
 
Messages: 2047
Inscription: 2 Avr 2005

Message le Sam Aoû 23, 2008 15:38

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 écrit:Eh peut-être même que l'on dit déclencheur :wink:


Tu as le droit de me donner 10 coups de fouets :mrgreen:
Dernière édition par fandecine le Dim Aoû 24, 2008 14:57, édité 3 fois.


Meeuuuhhh
WRInaute passionné
WRInaute passionné
 
Messages: 2046
Inscription: 8 Jan 2007

Message le Sam Aoû 23, 2008 21:00

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


Bool
WRInaute passionné
WRInaute passionné
 
Messages: 1290
Inscription: 26 Fév 2004

Message le Sam Aoû 23, 2008 22:25

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.


Meeuuuhhh
WRInaute passionné
WRInaute passionné
 
Messages: 2046
Inscription: 8 Jan 2007

Message le Sam Aoû 23, 2008 22:47

Ca se fait via phpMyAdmin ça ? Parce qu'honnêtement c'est la première fois que j'entends parler de ça.


Bool
WRInaute passionné
WRInaute passionné
 
Messages: 1290
Inscription: 26 Fév 2004

Message le Dim Aoû 24, 2008 0:56

euh non, très peu probable que ça arrive un jour dans phpmyadmin : http://dev.mysql.com/doc/refman/5.0/en/ ... igger.html


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3835
Inscription: 14 Sep 2006

Message le Dim Aoû 24, 2008 1:12

Tu peux voir les déclencheurs dans la table "triggers" sur information_schema en tout cas ;)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités