Utiliser les clefs étrangères
<<<
Recherche sur deux clefs Calcul du nombre de visites par jour
>>>

3.6 Exemples de requêtes usuelles
3 Tutoriels d'introduction
 Manuel de Référence MySQL 4.1 : Version Française

La valeur maximale d'une colonne
La ligne contenant le maximum d'une certaine colonne
Maximum d'une colonne par groupe
La ligne contenant la plus grande valeur d'un certain champ par rapport à un groupe
Utiliser les variables utilisateur
Utiliser les clefs étrangères
->Recherche sur deux clefs
Calcul du nombre de visites par jour
Utiliser AUTO_INCREMENT

3.6.7 Recherche sur deux clefs

MySQL n'optimise pas encore quand vous effectuez des recherches sur deux clefs différentes combinées avec OR (la recherche sur une clef avec différentes parties OR est elle pas mal optimisée) :


SELECT champ1_index, champ2_index FROM test_table WHERE champ1_index = '1'
OR  champ2_index = '1'
La raison est que nous n'avons pas trouvé le temps suffisant pour parvenir à un moyen efficace de gérer cela dans un cas général. (En comparaison, la gestion de AND est maintenant complètement générale et fonctionne très bien.)

En MySQL 4.0, vous pouvez résoudre ce problème efficacement en utilisant une clause UNION qui combine le résultat de deux requêtes SELECT séparée.s Syntaxe de UNION . Chaque requête SELECT ne recherche qu'avec une seule clé, et peut être optimisée :


SELECT field1_index, field2_index FROM test_table WHERE field1_index = '1'
UNION
SELECT field1_index, field2_index FROM test_table WHERE field2_index = '1';

Avant MYSQL 4.0, vous pouvez résoudre ce problème efficacement en utilisant une table temporaire ( TEMPORARY ). Ce type d'optimisation est très utile si vous utilisez des requêtes très complexes et que le serveur SQL fait une optimisation dans le mauvais ordre.


CREATE TEMPORARY TABLE tmp
SELECT champ1_index, champ2_index FROM test_table WHERE champ1_index = '1';
INSERT INTO tmp
SELECT champ1_index, champ2_index FROM test_table WHERE champ2_index = '1';
SELECT * from tmp;
DROP TABLE tmp;
La méthode ci-dessus pour résoudre cette requête est en effet une UNION de deux requêtes. Syntaxe de UNION .

<< Recherche sur deux clefs >>
Utiliser les clefs étrangères Exemples de requêtes usuelles Calcul du nombre de visites par jour