MySQL中EXPLAIN的解释_MySQL
EXPLAIN是查看MySQL优化器如何决定执行查询的主要方法,这个功能具有局限性,以为它并总是会说出真相,但是却可以获得最好信息.
学会解释EXPLAIN,你就会了解MySQL优化器是如何工作,你才能去优化MySQL.
如何调用?
只需要在SELECT前面加上EXPLAIN即可.
在语句结尾(;之前)加上\G能够更清晰的查看.
需要说的是EXPLAIN只对SELECT查询作解释,INSERT,UPDATE,DELETE不会哦.
EXPLAIN中的列
id列一个标识SELECT所属行编号,如果在语句中没有子查询或联合,说明只有一个SELECT,于是这个列显示为1,否则内层的SELECT会顺序编号.
MySQL将SELECT查询分为简单和复杂类型,复杂类型可分为:简单子查询,所谓的派生表(在FROM子句中的子查询),UNION查询.
简单子查询:EXPLAIN SELECT (SELECT `uid` FROM `tips` limit 1) FROM `test_key` WHERE 1
所谓的派生表(在FROM子句中的子查询)EXPLAIN SELECT uid FROM (SELECT uid FROM user) as der.
select_type列:显示了对应还是简单还是复杂SELECT(如果是后者,则将会是三种复杂类型中的一种).
SIMPLE意味着查询中不包含子查询和UNION.如果查询中包含子查询或UNION,那么最外层的SELECT被标记为PRIMARY(也就是id列为1的)
其他标记:
SUBQUERY,包含在SELECT列表中的子查询(不在FROM子句中)被标记为此;
DERIVED,在FROM子句中的子查询被标记为此;
UNION,在UNION中的第二个和随后的SELECT被标记为此;如EXPLAIN SELECT 1 UNION ALL SELECT 1
UNION RESULT,用来从UNION的临时表检索结果的SELECT标记为UNION RESULT,如EXPLAIN SELECT 1 UNION ALL SELECT 1
table列:显示对应行正在访问哪个表
当FROM子句中有子查询或UNION时,table列是
type列:就是MySQL决定如何查找表中行(一下从最差到最优排列)
ALL,全表扫描
index,跟全表扫描一样,知识MySQL在扫描表时按索引次序进行而不是行range,范围扫描,一个有限制的索引扫描,它开始于索引里的某一点,返回匹配这个值域的行(显而易见的范围扫描.即带有BETWEEN或在WHERE子句中带有>的查询,当MySQL使用索引去查找一系列值的时候,如IN()和OR列表,也为显示的范围扫描)
ref,一种索引访问也叫索引查找,他返回所有匹配某单个值的行,它可能会找到多个符合条件行(EXPLAIN SELECT tipname FROM `tips` WHERE uid=10984)
eq_ref,一种索引查找,他最多只返回一条符合条件的行.这种会在使用主键或者唯一性索引时看到.(EXPLAIN SELECT * FROM `tips` WHERE uid=12)
const和system,当MySQL能对查询的某部分进行优化并将其转换成一个常量时(EXPLAIN SELECT * FROM `tips` WHERE id=5)
NULL,这种访问方式意味着MySQL能在优化阶段分解查询语句,在执行阶段用不着在访问表或者索引(EXPLAIN SELECT max(id),min(id)FROM `tips`)
possible_keys列:这一列显示了查询可以使用哪些索引,是基于查询访问的列和使用的比较操作符来判断的.
key列:这一列显示了MySQL决定采用哪个索引来优化对该表的访问
key_len列:显示MySQL在索引里使用的字节数.举个例子就是在查询中使用到了主键,而主键的数据类型为INT,则为4,SMALLINT则为2
ref列:显示了之前的表在key列记录的索引中查询值所用到的列或常量.
row列:显示的是MySQL为了找到所需的值而要读取的行数.
Extra列:在此显示的是在其他列不适合显示的额外信息
Using index,MySQL将使用覆盖索引,以避免访问表(就是仅仅使用了索引中信息而没有读取表中)
Using where,意味着MySQL服务器将在存储引擎检索行后在进行过滤(将会通过WHERE条件来筛选存储引擎返回的记录)
Using temporary,意味着MySQL在对查询结果排序时会用到一个临时表.
Using filesort,意味着MySQL会对结果使用一个外部索引排序,而不是按索引次序从表里读出来.
Rangechecked for each record(indexmap:N),意味着没有好用的索引,新的索引将在联接的每一行上重新估算,N代表possible_keys列中索引的位图,并且是冗余的。

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)

Sujets chauds



L'article discute de l'utilisation de l'instruction ALTER TABLE de MySQL pour modifier les tables, notamment en ajoutant / abandon les colonnes, en renommant des tables / colonnes et en modifiant les types de données de colonne.

L'article discute de la configuration du cryptage SSL / TLS pour MySQL, y compris la génération et la vérification de certificat. Le problème principal est d'utiliser les implications de sécurité des certificats auto-signés. [Compte de caractère: 159]

L'article traite des stratégies pour gérer de grands ensembles de données dans MySQL, y compris le partitionnement, la rupture, l'indexation et l'optimisation des requêtes.

L'article traite des outils de GUI MySQL populaires comme MySQL Workbench et PhpMyAdmin, en comparant leurs fonctionnalités et leur pertinence pour les débutants et les utilisateurs avancés. [159 caractères]

L'article discute de la suppression des tables dans MySQL en utilisant l'instruction TABLE DROP, mettant l'accent sur les précautions et les risques. Il souligne que l'action est irréversible sans sauvegardes, détaillant les méthodes de récupération et les risques potentiels de l'environnement de production.

L'article discute de l'utilisation de clés étrangères pour représenter les relations dans les bases de données, en se concentrant sur les meilleures pratiques, l'intégrité des données et les pièges communs à éviter.

L'article discute de la création d'index sur les colonnes JSON dans diverses bases de données comme PostgreSQL, MySQL et MongoDB pour améliorer les performances de la requête. Il explique la syntaxe et les avantages de l'indexation des chemins JSON spécifiques et répertorie les systèmes de base de données pris en charge.

L'article discute de la sécurisation MySQL contre l'injection SQL et les attaques brutales à l'aide de déclarations préparées, de validation des entrées et de politiques de mot de passe solides (159 caractères)
