8791 sujets

Développement web côté serveur, CMS

Bonsoir à tous,

je suis actuellement confronté à une problématique concernant une de mes requêtes et qui m'a déjà valu deux suspensions de compte sur mon hébergeur...

Je possède une table d'environs 380.000 entrées... Cette taille ne varie pas et les inserts y sont rares ou inexistants (pas plus d'une fois par an...)

Cette table contient une colonne varchar (key primaire) (en gros c'est un dico Smiley cligne ), ainsi qu'une colonne nombre (int) qui indique le nombre d'occurences du mot...

J'exécute très souvent une requête très lourde (oula oui !), et je cherche à créer un index sur nombre, sachant que dans mon where j'ai toujours
nombre >= X
et
nombre <= Y
.

X est fixe, Y peut être variable mais est plutôt élevé

Je cherche donc à créer un index (de quel type, je ne sais pas trop, mais j'ai cru voir passer un "range" qui pourrait m'intéresser !!) sur nombre en ayant pour valeur X et Y (sachant que Y est la valeur max que je peux trouver)

Quel est la syntaxe à utiliser pour créer un index de type "range" si ce type existe ?

Question subsidiaire... Est-il intéressant de mettre un index sur toutes les colonnes d'une table lorsque elles apparaissent dans ma clause Where ?

J'espère que je suis assez clair... En me relisant, je n'ai pas l'impression de l'être, mais ma problématique est dure à expliquer... Surtout que je ne peux pas donner ma requête complète...

Merci pour votre aide !! Smiley lol
Salut,

la notion d'index de type "range" ne me dit rien mais à ma connaissance :
* il vaut mieux utiliser "WHERE nombre BETWEEN x and y" que "WHERE nombre >= x and nombre <=y"
* le mieux est de créer un index regroupant tous les champs de la clause WHERE. Par exemple pour une requête fréquente
SELECT zone1, zone2, zone3 FROM matable 
WHERE zone1="blabla" and zone2 BETWEEN x and y
cela donnerait
 ALTER TABLE matable ADD INDEX ( zone1 , zone2)

A+ Smiley cligne
merci pour ta réponse...

en fait il faudrait donc que je fasse un index avec quasiment la totalité de mes colonnes, sachant qu'elles n'apparaitront pas tout le temps dans la clause WHERE...

Je vais faire des tests pour voir si ça change quelque chose...