3.5 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 . Calculer les visites par jour . Utiliser AUTO_INCREMENT
|
3.5.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.)
Pour le moment, 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
.
|