Maison >base de données >tutoriel mysql >Comment puis-je exécuter efficacement une deuxième requête SELECT dans MySQL uniquement si la première requête ne renvoie aucune ligne ?
Requêtes SELECT conditionnelles : exécution de requêtes alternatives basées sur le nombre de lignes
Pour optimiser votre script PHP, vous recherchez une méthode d'exécution dynamique une deuxième requête SELECT uniquement lorsque la première requête ne renvoie aucune ligne. Voici comment y parvenir dans MySQL :
Une approche consiste à utiliser des instructions IF imbriquées pour comparer le nombre de lignes de la première requête :
IF (SELECT COUNT(*) FROM proxies WHERE A='B') > 0 THEN SELECT * FROM proxies WHERE A='B' ELSEIF (SELECT COUNT(*) FROM proxies WHERE A='C') > 0 THEN SELECT * FROM proxies WHERE A='C' END IF
Cependant, cette méthode exécute chaque requête deux fois pour chaque condition. Pour une meilleure optimisation, pensez à utiliser UNION ALL avec l'opérateur EXISTS :
SELECT * FROM proxies WHERE A='B' UNION ALL SELECT * FROM proxies WHERE A='C' AND NOT EXISTS ( SELECT 1 FROM proxies WHERE A='B' )
Cette requête recherchera d'abord les lignes avec A='B' et les renverra. Si aucune ligne avec A='B' n'est trouvée, il récupérera alors les lignes avec A='C', garantissant qu'une seule requête est exécutée.
Une démo de SQL Fiddle peut être trouvée ici : [Lien]
Cette approche exécute efficacement la deuxième requête uniquement lorsque la première requête ne renvoie aucune ligne, offrant ainsi des performances améliorées pour votre script PHP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!