Maison >base de données >tutoriel mysql >Comment puis-je optimiser les requêtes SQL à l'aide de jointures, d'unions, de sous-requêtes et de fonctions avancées ?

Comment puis-je optimiser les requêtes SQL à l'aide de jointures, d'unions, de sous-requêtes et de fonctions avancées ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-24 01:51:38457parcourir

How Can I Optimize SQL Queries Using Joins, Unions, Subqueries, and Advanced Functions?

Partie 1 - Jointures et unions

Joindre deux ou plusieurs tables à l'aide d'une jointure interne

select
    a.ID,
    b.model
from
    cars a
        join models b
            on a.model=b.ID

À l'aide d'une requête d'union

select
    a.ID,
    b.model,
    c.color
from
    cars a
        join models b
            on a.model=b.ID
        join colors c
            on a.color=c.ID
where
    b.ID=1
union all
select
    a.ID,
    b.model,
    c.color
from
    cars a
        join models b
            on a.model=b.ID
        join colors c
            on a.color=c.ID
where
    b.ID=3

Extérieur gauche et droit Jointures

select
    a.brand
from
    brands a
        left outer join cars b
            on a.ID=b.brand

Requêtes d'intersection

select
    *
from
    colors
where
    ID>2
intersect
select
    *
from
    colors
where
    id<4

Partie 2 - Sous-requêtes

Qu'est-ce qu'elles sont, où elles peuvent être utilisées et à quoi faut-il faire attention

Une sous-requête est une instruction select imbriquée dans une autre instruction select. Les sous-requêtes peuvent être utilisées pour effectuer des opérations complexes de récupération de données, telles que le filtrage, le tri et l'agrégation.

Où elles peuvent être utilisées

Les sous-requêtes peuvent être utilisées dans les cas suivants places :

  • Dans la clause WHERE pour filtrer les lignes renvoyées par la clause externe requête.
  • Dans la clause HAVING pour filtrer les groupes de lignes renvoyés par la requête externe.
  • Dans la clause SELECT pour spécifier les colonnes renvoyées par la requête externe.
  • Dans la clause FROM pour spécifier les tables jointes par la requête externe.

À surveiller pour

Lors de l'utilisation de sous-requêtes, il est important d'être conscient des points suivants :

  • Les sous-requêtes peuvent être coûteuses à exécuter, il est donc important de les utiliser uniquement lorsque cela est nécessaire .
  • Les sous-requêtes peuvent être difficiles à lire et à comprendre, il est donc important de bien les documenter.
  • Les sous-requêtes peuvent être vulnérable aux attaques par injection SQL, il est donc important d'utiliser des requêtes paramétrées lors de l'utilisation de sous-requêtes en SQL dynamique.

Partie 3 - Astuces et code efficace

Astuces

  • Utilisez des alias pour les noms de tables afin de rendre vos requêtes plus faciles à lire et comprendre.
  • Utilisez des parenthèses pour regrouper vos sous-requêtes afin de les rendre plus faciles à lire et à comprendre.
  • Utilisez l'instruction EXPLAIN pour voir comment vos requêtes sont exécutées par la base de données.
  • Utilisez des index pour améliorer les performances de vos requêtes.

Efficace Code

  • Utilisez les types de données corrects pour vos colonnes.
  • Évitez d'utiliser SELECT * dans vos requêtes.
  • Utilisez la clause WHERE pour filtrer les lignes qui sont renvoyés par vos requêtes.
  • Utilisez la clause ORDER BY pour trier les lignes renvoyées par votre requêtes.
  • Utilisez la clause LIMIT pour limiter le nombre de lignes renvoyées par vos requêtes.

Partie 4 - Sous-requêtes dans la clause From

Les sous-requêtes peuvent être utilisé dans la clause FROM pour spécifier les tables jointes par la requête externe. C'est ce qu'on appelle une table dérivée. Les tables dérivées peuvent être utilisées pour effectuer des opérations complexes de récupération de données, telles que le filtrage, le tri et l'agrégation.

L'exemple suivant montre comment utiliser une sous-requête dans la clause FROM pour filtrer les lignes renvoyées par la clause externe. requête :

select
    a.ID,
    b.model
from
    cars a
        join models b
            on a.model=b.ID

Partie 5 : un mélange de trucs de John

Les trucs de John

  • Utilisez l'instruction CASE pour évaluer conditionnellement des expressions.
  • Utilisez la fonction COALESCE pour renvoyer la première valeur non NULL dans une liste de expressions.
  • Utilisez la fonction GREATEST pour renvoyer la plus grande valeur dans une liste d'expressions.
  • Utilisez la fonction LEAST pour renvoyer la plus petite valeur dans une liste d'expressions.
  • Utilisez la fonction MOD pour calculer le reste d'une opération de division.
  • Utilisez la fonction MAINTENANT pour obtenir la date et l'heure actuelles.
  • Utilisez la fonction RAND pour générer un nombre aléatoire.
  • Utilisez la fonction ROUND pour arrondir un nombre à l'entier le plus proche.
  • Utilisez la fonction TRUNCATE pour tronquer un nombre à un nombre spécifié de décimales.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn