


Résumer et trier les pièges de la requête de jointure à gauche MySQL qui est lente et prend beaucoup de temps
Cet article vous apporte des connaissances pertinentes sur mysql Il présente principalement les pièges des requêtes de jointure gauche qui sont lentes et longues, y compris la commande EXPLAIN pour analyser l'instruction SELECT. Jetons-y un coup d'œil ensemble, j'espère. Utile à tout le monde.
Apprentissage recommandé : Tutoriel vidéo MySQL
Contexte du problème
Deux tables, l'une est la table utilisateur a (la clé primaire est de type int) et l'autre est la table d'informations spécifiques à l'utilisateur b (l'identifiant de la table utilisateur le champ est de type varchar).
Parce que nous souhaitons afficher les utilisateurs et les informations sur les utilisateurs, nous devons interroger en conséquence. Cependant, nous avons constaté que la requête après la jointure gauche est lente et prend trop de temps. Les données de la table utilisateur sont d'environ 20 000.
Analyse et traitement des problèmes
1. La commande EXPLAIN analyse l'instruction SELECT
Le champ de type fournit une base importante pour juger si la requête est efficace. Grâce au champ de type, nous jugeons que cette requête. est une analyse de table complète ou une analyse d'index, etc.
TOUS : indique une analyse de table complète. Ce type de requête est l'une des requêtes les moins performantes.
De manière générale, nos requêtes ne devraient pas avoir TOUS les types de requêtes, car de telles requêtes. are Lorsque la quantité de données est importante, ce sera un énorme désastre pour les performances de la base de données. Si une requête est de type ALL, d'une manière générale, elle peut être évitée en ajoutant un index au champ correspondant
2. .Nouvel index
Car la table de découverte Le champ b n'a pas été indexé auparavant.
alter table a add index idx_mbrID (mbrID);
Expliquez à nouveau l'analyse
et constatez que le type a changé en réf. En fonction de la relation de performance des différents types de types (
ALL < index < range ~ index_merge < ref < eq_ref < const < system
), cela semble OK après comparaison, donc la requête est exécutée.
3. Modifier le type de champ d'index pour qu'il soit cohérent
Après avoir exécuté la requête, j'ai constaté que la vitesse d'exécution n'était pas optimisée. J'ai soigneusement regardé le tableau conçu par mon précédent collègue et j'ai constaté que le champ de type d'index. était incohérent, je l'ai donc changé en varchar en int et j'ai à nouveau interrogé pour trouver la vitesse de requête.
Même si la chaîne écrite dans le code Java a été modifiée en int dans la base de données, le test actuel peut être utilisé normalement
Résumé
Après avoir résolu le problème, j'ai ouvert le manuel de développement et j'ai constaté que la spécification de l'index force clairement les types de données à être cohérents lors des jointures, le champ associé doit avoir un index ! ! !
Apprentissage recommandé : Tutoriel vidéo MySQL
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dans la base de données MySQL, la relation entre l'utilisateur et la base de données est définie par les autorisations et les tables. L'utilisateur a un nom d'utilisateur et un mot de passe pour accéder à la base de données. Les autorisations sont accordées par la commande Grant, tandis que le tableau est créé par la commande Create Table. Pour établir une relation entre un utilisateur et une base de données, vous devez créer une base de données, créer un utilisateur, puis accorder des autorisations.

MySQL convient aux débutants car il est simple à installer, puissant et facile à gérer les données. 1. Installation et configuration simples, adaptées à une variété de systèmes d'exploitation. 2. Prise en charge des opérations de base telles que la création de bases de données et de tables, d'insertion, d'interrogation, de mise à jour et de suppression de données. 3. Fournir des fonctions avancées telles que les opérations de jointure et les sous-questionnaires. 4. Les performances peuvent être améliorées par l'indexation, l'optimisation des requêtes et le partitionnement de la table. 5. Prise en charge des mesures de sauvegarde, de récupération et de sécurité pour garantir la sécurité et la cohérence des données.

Simplification de l'intégration des données: AmazonrDSMysQL et l'intégration Zero ETL de Redshift, l'intégration des données est au cœur d'une organisation basée sur les données. Les processus traditionnels ETL (extrait, converti, charge) sont complexes et prennent du temps, en particulier lors de l'intégration de bases de données (telles que AmazonrDSMysQL) avec des entrepôts de données (tels que Redshift). Cependant, AWS fournit des solutions d'intégration ETL Zero qui ont complètement changé cette situation, fournissant une solution simplifiée et à temps proche pour la migration des données de RDSMySQL à Redshift. Cet article plongera dans l'intégration RDSMYSQL ZERO ETL avec Redshift, expliquant comment il fonctionne et les avantages qu'il apporte aux ingénieurs de données et aux développeurs.

Pour remplir le nom d'utilisateur et le mot de passe MySQL: 1. Déterminez le nom d'utilisateur et le mot de passe; 2. Connectez-vous à la base de données; 3. Utilisez le nom d'utilisateur et le mot de passe pour exécuter des requêtes et des commandes.

1. Utilisez l'index correct pour accélérer la récupération des données en réduisant la quantité de données numérisées SELECT * FROMMLOYEESEESHWHERELAST_NAME = 'SMITH'; Si vous recherchez plusieurs fois une colonne d'une table, créez un index pour cette colonne. If you or your app needs data from multiple columns according to the criteria, create a composite index 2. Avoid select * only those required columns, if you select all unwanted columns, this will only consume more server memory and cause the server to slow down at high load or frequency times For example, your table contains columns such as created_at and updated_at and timestamps, and then avoid selecting * because they do not require inefficient query se

Une explication détaillée des attributs d'acide de base de données Les attributs acides sont un ensemble de règles pour garantir la fiabilité et la cohérence des transactions de base de données. Ils définissent comment les systèmes de bases de données gérent les transactions et garantissent l'intégrité et la précision des données même en cas de plantages système, d'interruptions d'alimentation ou de plusieurs utilisateurs d'accès simultanément. Présentation de l'attribut acide Atomicité: une transaction est considérée comme une unité indivisible. Toute pièce échoue, la transaction entière est reculée et la base de données ne conserve aucune modification. Par exemple, si un transfert bancaire est déduit d'un compte mais pas augmenté à un autre, toute l'opération est révoquée. BeginTransaction; UpdateAccountSsetBalance = Balance-100Wh

Navicat lui-même ne stocke pas le mot de passe de la base de données et ne peut récupérer que le mot de passe chiffré. Solution: 1. Vérifiez le gestionnaire de mots de passe; 2. Vérifiez la fonction "Remember Motway" de Navicat; 3. Réinitialisez le mot de passe de la base de données; 4. Contactez l'administrateur de la base de données.

Clause SQLLIMIT: Contrôlez le nombre de lignes dans les résultats de la requête. La clause limite dans SQL est utilisée pour limiter le nombre de lignes renvoyées par la requête. Ceci est très utile lors du traitement de grands ensembles de données, des affichages paginés et des données de test, et peut améliorer efficacement l'efficacité de la requête. Syntaxe de base de la syntaxe: selectColumn1, Column2, ... FromTable_NamelimitNumber_Of_Rows; Number_OF_ROWS: Spécifiez le nombre de lignes renvoyées. Syntaxe avec décalage: selectColumn1, Column2, ... FromTable_Namelimitoffset, numéro_of_rows; décalage: sauter
