question MySLQ et index

question MySLQ et index - SQL/NoSQL - Programmation

Marsh Posté le 06-04-2006 à 15:45:15    

Bonjour à tous
 
Si j'ai une table  
"table"
qui contient 3 colonnes
a, min, max ( 3 INT non signés )
je veux chopper tous les "a" qui vérifient b>=min et b<=max pour un b quelconque.
 
la requete sera donc normalement  
 
SELECT a FROM table WHERE b>=min AND b<=max;
 
Jusque l'a je devrais avoir bon :D
 
maintenant, la table 'table' contient beaucoup beaucoup (à priori, de l'ordre de la 10aines de million) de lignes.  
Généralement, sur une entree "min" et "max" sont assez proches (quelques 10aines de différences).
Vu la construction de la table et son remplissage (que je ne vais pas détailler ici ...), il ne devrait y pas y avoir masse de lignes en sorti de cette requete. de l'ordre de 100 à tout casser.
 
mais  les 2 requêtes
SELECT a FROM table WHERE b>=min
et  
SELECT a FROM table WHERE b<=max
vont elles retourner des milliers (millions ?) d'éléments
 
 
 
Je me demandais comment optimiser la premiere requete ...  
Est-ce que 2 index sur les colonnes min et max suffisent ?
Faut-il faire autre chose ?


---------------
PeK
Reply

Marsh Posté le 06-04-2006 à 15:45:15   

Reply

Marsh Posté le 06-04-2006 à 15:52:13    

amha tu peux pas faire grand chose, avec une requête comme ça il faut parcourir toute la table, de toute manière...[:urd]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-04-2006 à 16:31:39    

tu m'inquiete la :/


Message édité par PeK le 06-04-2006 à 16:31:47

---------------
PeK
Reply

Marsh Posté le 06-04-2006 à 16:35:41    

Je peux me tromper, hein, je suis pas un expert...[:jean-guitou]
 
C'est un index sur (b - min) et un sur (b - max), qu'il te faudrait, plutot, non? :??:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-04-2006 à 12:14:01    

Le parsing de la table entière ne devrait pas être trop long ... Par contre, si tu la tries, là ca va te prendre quelques 10aines de secondes :D

Message cité 1 fois
Message édité par Max Evans le 16-04-2006 à 13:54:26

---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 16-04-2006 à 12:38:11    

Max Evans a écrit :

Le parsing de la table entière ne devrait pas être trop long ... Par contre, si tu l'as tries, là ca va te prendre quelques 10aines de secondes :D


oula, ça fait mal aux yeux


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 16-04-2006 à 13:54:15    

Ouais bon, autant pour moi :o :D


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 16-04-2006 à 20:17:25    

salut n'hésite pas à utilier EXPLAIN {ta requete} pour voir s'il te manque pas des index.
 
sinon je pensais aux sous requetes si t'es sous Mysql5 ça pourra marcher sinon je sais pas

Reply

Marsh Posté le 16-04-2006 à 21:04:55    

overider a écrit :

salut n'hésite pas à utilier EXPLAIN {ta requete} pour voir s'il te manque pas des index.
 
sinon je pensais aux sous requetes si t'es sous Mysql5 ça pourra marcher sinon je sais pas


 
pas de pb pour utiliser mySQL 5.  
je regarde EXPLAIN , je connaissais pas


---------------
PeK
Reply

Marsh Posté le 16-04-2006 à 21:18:25    

"Est-ce que 2 index sur les colonnes min et max suffisent ? "
 
Plutot un index sur deux colonnes nan ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed