Mysql utilise l'index pour optimiser la jointure

Rejoindre MySQL est une opération courante qui associe des données dans deux ou plusieurs tables. Dans les applications pratiques, nous utilisons généralement différents types d'opérations de jointure telles que la jointure gauche, la jointure interne et la jointure. Toutefois, pour les ensembles de données volumineux, les opérations de jointure peuvent entraîner des problèmes de performances. Par conséquent, lors de l’exécution d’opérations de jointure, il est très important d’utiliser des index pour améliorer l’efficacité des requêtes.

Cet article présentera les opérations de jointure gauche, de jointure interne et de jointure dans MySQL, et expliquera comment utiliser les index pour optimiser ces opérations.

一、rejoindre à gauche

la jointure gauche est une opération de jointure qui renvoie tous les enregistrements de la table de gauche et les enregistrements de la table de droite qui correspondent aux enregistrements de la table de gauche. S'il n'y a aucun enregistrement dans la table de droite qui correspond à l'enregistrement dans la table de gauche, une valeur NULL est renvoyée.

Par exemple, nous avons deux tableaux A et B, leur structure est la suivante :

CREATE TABLE A (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

CREATE TABLE B (
  id INT PRIMARY KEY,
  a_id INT,
  value VARCHAR(50)
);

Nous souhaitons maintenant interroger tous les enregistrements de la table A et les enregistrements de la table B qui lui sont associés. Nous pouvons utiliser l’instruction de jointure gauche suivante :

SELECT * FROM A
LEFT JOIN B ON A.id = B.a_id;

Cela renverra tous les enregistrements de la table A et les enregistrements de la table B qui lui sont associés. S'il n'y a aucun enregistrement dans la table B qui correspond à l'enregistrement dans la table A, une valeur NULL est renvoyée.

Lors d'une opération de jointure gauche, MySQL effectuera d'abord une analyse complète de la table A, puis fera correspondre la table B. S'il existe des index dans la table B qui peuvent être utilisés pour accélérer la correspondance, l'efficacité des requêtes sera considérablement améliorée.

Par exemple, nous pouvons créer un index pour la colonne a_id dans le tableau B :

CREATE INDEX idx_a_id ON B(a_id);

Cela amènera MySQL à utiliser cet index lors de l'exécution d'une opération de jointure gauche pour accélérer la correspondance.

2. jointure interne

La jointure interne est une opération de jointure qui renvoie les enregistrements qui existent dans les deux tables. Autrement dit, les résultats ne seront renvoyés que s'il existe des enregistrements correspondants dans les tableaux de gauche et de droite.

Par exemple, nous avons deux tableaux A et B, leur structure est la suivante :

CREATE TABLE A (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

CREATE TABLE B (
  id INT PRIMARY KEY,
  a_id INT,
  value VARCHAR(50)
);

Nous souhaitons maintenant interroger les enregistrements qui existent à la fois dans la table A et dans la table B. Nous pouvons utiliser l’instruction de jointure interne suivante :

SELECT * FROM A
INNER JOIN B ON A.id = B.a_id;

Cela renverra les enregistrements qui existent à la fois dans la table A et dans la table B.

Lors de l'exécution d'une opération de jointure interne, MySQL fera correspondre la table A et la table B. Si les tables A et B disposent d'index pouvant être utilisés pour accélérer la correspondance, l'efficacité des requêtes sera considérablement améliorée.

Par exemple, nous pouvons créer des index pour la colonne id et la colonne a_id dans les tables A et B :

CREATE INDEX idx_a_id ON B(a_id);
CREATE INDEX idx_id ON A(id);

Cela amènera MySQL à utiliser ces index pour accélérer la correspondance lors des opérations de jointure interne.

3. rejoindre

Join est une opération d'association générale qui peut renvoyer des enregistrements de deux ou plusieurs tables en fonction de conditions spécifiées. Différente de la jointure gauche et de la jointure interne, l’opération de jointure peut renvoyer tout type d’enregistrements en fonction de conditions spécifiées.

Par exemple, nous avons deux tableaux A et B, leur structure est la suivante :

CREATE TABLE A (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

CREATE TABLE B (
  id INT PRIMARY KEY,
  a_id INT,
  value VARCHAR(50)
);

Nous souhaitons maintenant interroger tous les enregistrements des tables A et B qui remplissent les conditions. Nous pouvons utiliser l'instruction de jointure suivante :

SELECT * FROM A
JOIN B ON A.id = B.a_id OR A.name = B.value;

Cela renverra tous les enregistrements des tableaux A et B qui répondent aux critères.

Lors de l'exécution d'une opération de jointure, MySQL respectera les conditions spécifiées. Si les colonnes impliquées disposent d'index pouvant être utilisés pour accélérer la correspondance, l'efficacité des requêtes sera considérablement améliorée.

Par exemple, nous pouvons créer des index pour la colonne id et la colonne a_id dans les tables A et B :

CREATE INDEX idx_a_id ON B(a_id);
CREATE INDEX idx_id ON A(id);

Cela amènera MySQL à utiliser ces index lors des opérations de jointure pour accélérer la correspondance.

Résumer

Lors de l'utilisation des opérations de jointure gauche, de jointure interne et de jointure dans MySQL, il est très important d'utiliser des index pour améliorer l'efficacité des requêtes. En créant des index sur les colonnes associées, nous pouvons accélérer la correspondance des enregistrements MySQL lors des opérations de jointure. Par conséquent, lors de la conception de la base de données, vous devez créer des index pour les colonnes pertinentes en fonction de la situation réelle et ajuster le type et l'ordre des index si nécessaire pour maximiser l'efficacité des requêtes.

Je suppose que tu aimes

Origine blog.csdn.net/zhengren964/article/details/132300133
conseillé
Classement