Index MySQL Force

Index MySQL Force
La valeur particulière dans un champ de table peut être recherchée rapidement en utilisant un index. Si aucun index n'est défini dans le tableau, la recherche commencera à partir du premier enregistrement et arrêtera de rechercher où la valeur de recherche existe. Si la valeur de recherche n'existe pas dans le tableau, la recherche s'arrêtera après avoir itérant le dernier enregistrement. C'est très long pour la grande table. MySQL utilise des index pour les champs de la table pour rendre la recherche plus rapidement. L'optimiseur de requête du serveur MySQL est un composant utile pour optimiser l'exécution de la requête en utilisant les statistiques disponibles. Si les statistiques montrent que la valeur de recherche existe dans la plupart des enregistrements du tableau, il n'y a aucun avantage à utiliser l'index. Si les statistiques montrent que la valeur de recherche existe dans quelques enregistrements de table, il est avantageux d'utiliser l'index pour rendre la recherche plus rapidement. MySQL peut forcer l'index lorsque l'optimiseur de requête ignore l'index.

Syntaxe:

La syntaxe de l'indice de force est donnée ci-dessous.

SÉLECTIONNER *
De Table_Name
Index de force (index_list)
Où condition;

Ici, l'index_list contiendra un ou plusieurs noms de colonne du Table_Name utilisés pour la recherche.

Conditions préalables:

Vous devez créer une table de base de données avec des données dans une base de données MySQL pour vérifier la fonction d'index de force de MySQL. Ouvrez le terminal et connectez-vous avec le serveur MySQL en exécutant la commande suivante.

$ sudo mysql -u racine

Exécutez la commande suivante pour créer une base de données nommée test_db.

Créer une base de données test_db;

Exécutez la commande suivante pour sélectionner la base de données.

Utilisez test_db;

Exécutez la requête suivante pour créer un tableau nommé employés avec cinq champs.

Créer des «employés» de table (
'id' int (11) auto_increment,
'nom' varchar (50) pas null,
'post' varchar (25) pas null,
Date de «jointure_date» pas nul,
'salaire' int not null,
Clé primaire (id));

Exécutez la requête d'insertion suivante pour ajouter six valeurs dans le tableau des employés.

Insérer dans les valeurs «Employés» («Id», «Nom», «Post», «Joining_Date», «Salaire»)
(Null, «Nur Jahan», «Assistant Manager», «2021-01-05», 78000),
(Null, «Asif Iqbal», «Manager», «2019-03-20», 56000),
(Null, «Jafar Iqbal», «Assistant Manager», «2021-12-31», «60000»),
(Null, «Sefali Akter», «Officier marketing», «2022-01-01», «65000»),
(Null, «Apurbo Chowdhury», «PDG», «2013-05-15», «350000»),
(Null, «Nirob Hasan», «Manager», «2019-12-18», «58000»);

Exemple-1: Vérifiez l'index par défaut

Lorsqu'une table est créée, la clé principale sera définie comme un index par défaut. Exécutez la commande suivante pour vérifier la liste d'index actuelle des employés.

Afficher les index des employés;

Sortir:

La sortie suivante apparaîtra après avoir exécuté la requête ci-dessus. La sortie montre que le Btree L'index a été attribué pour le identifiant champ du employés tableau.

Si aucun index n'est attribué pour le salaire champ du employés Table après avoir créé le tableau, alors tous les enregistrements de la table seront analysés par l'optimiseur de requête pour la requête suivante. Le Expliquer Le mot-clé est utilisé ici pour obtenir les informations d'exécution de la requête sélectionnée.

Expliquez Sélectionner * parmi les employés
Où le salaire> = 60000;

Sortir:

La sortie suivante apparaîtra après avoir exécuté la requête ci-dessus. La sortie montre que toutes les lignes étaient nécessaires pour exécuter les données de requête et de filtre à partir du employés tableau.

Exemple-2: Vérifiez l'exécution de la requête après avoir créé l'index

Vous devez définir l'indice pour le salaire champ du employés table pour optimiser correctement la requête. Exécutez la requête suivante pour créer l'index pour le salaire champ du employé tableau.

Créer index index_salary sur les employés (salaire);

Exécutez à nouveau la commande suivante pour vérifier l'état d'index actuel du tableau des employés.

Afficher les index des employés;

Sortir:

La sortie suivante apparaîtra après avoir exécuté la commande ci-dessus. La sortie montre qu'il y a maintenant deux index btree dans le tableau des employés.

Exécutez à nouveau la requête de sélection précédente pour vérifier les informations d'exécution de la requête. La sortie de l'instruction Explication peut ne pas être précise pour le tableau contenant quelques enregistrements ou peut varier pour différentes exécutions. Il est préférable d'ajouter de gros enregistrements dans le tableau pour obtenir le résultat approximativement correct.

Expliquez Sélectionner * parmi les employés
Où le salaire> = 60000;

Sortir:

La sortie suivante apparaîtra après avoir exécuté la requête ci-dessus. La sortie montre que 4 lignes étaient nécessaires pour exécuter la requête et filtrer les données de la employés tableau. Selon la sortie, le temps d'exécution de la requête est 0.04 secondes qui ont accédé à 4 lignes pour obtenir la sortie.

Exemple-3: Vérifiez l'exécution de la requête après avoir utilisé l'index de force

L'optimiseur de requête utilisera ou non l'indice défini qui dépend de l'état de la requête, du nombre d'enregistrements de la requête et du nombre de lignes correspondantes du tableau en fonction de la condition.

Exécutez la requête suivante pour forcer l'optimiseur de requête à utiliser le index_salary Index au moment de l'exécution de la requête. Le Indice de force L'instruction est utilisée avant la clause où la requête sélectionnée pour forcer l'optimiseur de requête à utiliser le index_salary indice.

Expliquez Sélectionner * parmi les employés
Index de force (index_salary)
Où le salaire> = 60000;

Sortir:

La sortie suivante apparaîtra après avoir exécuté la requête ci-dessus. La sortie montre que 4 lignes étaient nécessaires pour exécuter la requête et filtrer les données de la employés tableau. Selon la sortie, le temps d'exécution de la requête est 0.00 secondes qui ont accédé à 4 lignes pour obtenir la sortie. Cette sortie peut également varier pour différentes exécutions.

Conclusion:

La fonction d'index de force de MySQL est utile lors de la recherche de la valeur particulière dans un tableau qui contient un grand nombre d'enregistrements. La manière de créer un index pour un tableau et de forcer l'optimiseur de requête à utiliser cet index avec force au moment de l'exécution de la requête en utilisant l'instruction Index Force a été affichée dans ce tutoriel.