Maison base de données tutoriel mysql MySQL 索引及查询优化

MySQL 索引及查询优化

Jun 07, 2016 pm 04:07 PM
mysql查询优化 mysql索引

索引的类型 : Oslash; 普通索引 这是最基本的索引类型,没唯一性之类的限制。 Oslash; 唯一性索引 和普通索引基本相同,但

索引的类型 :

Ø 普通索引  这是最基本的索引类型,没唯一性之类的限制。

Ø 唯一性索引 和普通索引基本相同,但所有的索引列值保持唯一性。

Ø 主键索引  主键是一种唯一索引,但必须指定为”PRIMARY KEY”。

Ø 全文索引  MYSQL从3.23.23开始支持全文索引和全文检索。在MYSQL中,全文索引的索引类型为FULLTEXT。全文索引可以在VARCHAR或者TEXT类型的列上创建。

大多数MySQL索引(PRIMARY KEY、UNIQUE、INDEX和FULLTEXT)使用B树中存储。

空间列类型的索引使用R-树,MEMORY表支持hash索引。

单列索引和多列索引(复合索引):

索引可以是单列索引,也可以是多列索引。对相关的列使用索引是提高SELECT操作性能的最佳途径之一。

MySQL可以为多个列创建索引。一个索引可以包括15个列。对于某些列类型,可以索引列的左前缀,列的顺序非常重要。

多列索引可以视为包含通过连接索引列的值而创建的值的排序的数组。一般来说,即使是限制最严格的单列索引,它的限制能力也远远低于多列索引。

多列索引有一个特点,即最左前缀(Leftmost Prefixing)。假如有一个多列索引为key(firstname lastname age),当搜索条件是以下各种列的组合和顺序时,MySQL将使用该多列索引:

firstname,lastname,age

firstname,lastname

firstname

也就是说,相当于还建立了key(firstname lastname)和key(firstname)。

索引主要用于下面的操作:

Ø 快速找出匹配一个WHERE子句的行。

Ø 删除行。当执行联接时,从其它表检索行。

Ø 对具体有索引的列key_col找出MAX()或MIN()值。由预处理器进行优化,,检查是否对索引中在key_col之前发生所有关键字元素使用了WHERE key_part_# = constant。在这种情况下,MySQL为每个MIN()或MAX()表达式执行一次关键字查找,并用常数替换它。如果所有表达式替换为常量,查询立即返回。例如:

SELECT MIN(key2), MAX (key2)  FROM tb WHERE key1=10;

Ø 如果对一个可用关键字的最左面的前缀进行了排序或分组(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。如果所有关键字元素后面有DESC,关键字以倒序被读取。

Ø 在一些情况中,可以对一个查询进行优化以便不用查询数据行即可以检索值。如果查询只使用来自某个表的数字型并且构成某些关键字的最左面前缀的列,为了更快,可以从索引树检索出值。

SELECT key_part3 FROM tb WHERE key_part1=1;

有时MySQL不使用索引,即使有可用的索引。一种情形是当优化器估计到使用索引将需要MySQL访问表中的大部分行时。(在这种情况下,表扫描可能会更快些)。然而,如果此类查询使用LIMIT只搜索部分行,MySQL则使用索引,因为它可以更快地找到几行并在结果中返回。例如:

MySQL 索引及查询优化

合理的建立索引的建议:

(1)  越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。

(2)  简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。

(3)  尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值

这部分是关于索引和写SQL语句时应当注意的一些琐碎建议和注意点 :

1. 当结果集只有一行数据时使用LIMIT 1

2. 避免SELECT *,始终指定你需要的列

 从表中读取越多的数据,查询会变得更慢。他增加了磁盘需要操作的时间,还是在数据库服务器与WEB服务器是独立分开的情况下。你将会经历非常漫长的网络延迟,仅仅是因为数据不必要的在服务器之间传输。

3. 使用连接(JOIN)来代替子查询(Sub-Queries)

    连接(JOIN).. 之所以更有效率一些,是因为MySQL不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作。

4. 使用ENUM、CHAR 而不是VARCHAR,使用合理的字段属性长度

5. 尽可能的使用NOT NULL

6. 固定长度的表会更快

7. 拆分大的DELETE 或INSERT 语句

8. 查询的列越小越快

Where条件 :

在查询中,WHERE条件也是一个比较重要的因素,尽量少并且是合理的where条件是很重要的,尽量在多个条件的时候,把会提取尽量少数据量的条件放在前面,减少后一个where条件的查询时间。

有些where条件会导致索引无效:

Ø where子句的查询条件里有!=,MySQL将无法使用索引。

Ø where子句使用了Mysql函数的时候,索引将无效,比如:select * from tb where left(name, 4) = ‘xxx’

Ø 使用LIKE进行搜索匹配的时候,这样索引是有效的:select * from tbl1 where name like ‘xxx%’,而like ‘%xxx%’ 时索引无效

# The ideal of life is for ideal life! #

本文永久更新链接地址

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Plusieurs situations d'échec de l'index MySQL Plusieurs situations d'échec de l'index MySQL Feb 21, 2024 pm 04:23 PM

Situations courantes : 1. Utiliser des fonctions ou des opérations ; 2. Conversion de type implicite ; 3. Utiliser différent de (!= ou <>) ; 4. Utiliser l'opérateur LIKE et commencer par un caractère générique ; Valeur : 7. Faible sélectivité de l'indice ; 8. Principe du préfixe le plus à gauche de l'indice composite ; 9. Décision de l'optimiseur ;

Dans quelles circonstances l'index MySQL échouera-t-il ? Dans quelles circonstances l'index MySQL échouera-t-il ? Aug 09, 2023 pm 03:38 PM

Les index MySQL échoueront lors d'une requête sans utilisation de colonnes d'index, de types de données incompatibles, d'une utilisation inappropriée des index de préfixe, de l'utilisation de fonctions ou d'expressions pour les requêtes, d'un ordre incorrect des colonnes d'index, de mises à jour fréquentes des données et d'un trop grand ou trop peu d'index. 1. N'utilisez pas de colonnes d'index pour les requêtes. Afin d'éviter cette situation, vous devez utiliser des colonnes d'index appropriées dans la requête. 2. Les types de données ne correspondent pas. Lors de la conception de la structure de la table, vous devez vous assurer que les colonnes d'index correspondent. types de données de la requête ; 3. , Utilisation inappropriée de l'index de préfixe, vous pouvez utiliser l'index de préfixe.

Règles de correspondance du préfixe gauche de l'index MySQL Règles de correspondance du préfixe gauche de l'index MySQL Feb 24, 2024 am 10:42 AM

Principe de l'indexation MySQL le plus à gauche et exemples de code Dans MySQL, l'indexation est l'un des moyens importants pour améliorer l'efficacité des requêtes. Parmi eux, le principe de l'index le plus à gauche est un principe important que nous devons suivre lors de l'utilisation des index pour optimiser les requêtes. Cet article présentera le principe du principe le plus à gauche de l'index MySQL et donnera quelques exemples de code spécifiques. 1. Principe du principe de l'index le plus à gauche Le principe de l'index le plus à gauche signifie que dans un index, si la condition de requête est composée de plusieurs colonnes, alors seule la requête basée sur la colonne la plus à gauche de l'index peut satisfaire pleinement les conditions de requête.

Quelles sont les classifications des index MySQL ? Quelles sont les classifications des index MySQL ? Apr 22, 2024 pm 07:12 PM

Les index MySQL sont divisés dans les types suivants : 1. Index ordinaire : correspond à la valeur, à la plage ou au préfixe ; 2. Index unique : garantit que la valeur est unique 3. Index de clé primaire : index unique de la colonne de clé primaire ; index clé : pointe vers la clé primaire d'une autre table ; 5. Index en texte intégral : recherche en texte intégral ; 6. Index de hachage : recherche par correspondance égale 7. Index spatial : recherche géospatiale 8. Index composite : recherche basée sur plusieurs ; Colonnes.

Stratégies d'optimisation des performances pour la mise à jour des données et la maintenance des index PHP et MySQL et leur impact sur les performances Stratégies d'optimisation des performances pour la mise à jour des données et la maintenance des index PHP et MySQL et leur impact sur les performances Oct 15, 2023 pm 12:15 PM

Stratégies d'optimisation des performances pour la mise à jour des données et la maintenance des index PHP et MySQL et leur impact sur les performances Résumé : Dans le développement de PHP et MySQL, les index sont un outil important pour optimiser les performances des requêtes de base de données. Cet article présentera les principes de base et l'utilisation des index, et explorera l'impact des index sur les performances sur la mise à jour et la maintenance des données. Parallèlement, cet article fournit également des stratégies d'optimisation des performances et des exemples de code spécifiques pour aider les développeurs à mieux comprendre et appliquer les index. Principes de base et utilisation des index Dans MySQL, un index est un nombre spécial

Comment utiliser les index MySQL de manière rationnelle et optimiser les performances des bases de données ? Concevez des protocoles que les étudiants techniques doivent connaître ! Comment utiliser les index MySQL de manière rationnelle et optimiser les performances des bases de données ? Concevez des protocoles que les étudiants techniques doivent connaître ! Sep 10, 2023 pm 03:16 PM

Comment utiliser les index MySQL de manière rationnelle et optimiser les performances des bases de données ? Concevez des protocoles que les étudiants techniques doivent connaître ! Introduction : À l'ère d'Internet d'aujourd'hui, la quantité de données continue de croître et l'optimisation des performances des bases de données est devenue un sujet très important. MySQL étant l’une des bases de données relationnelles les plus populaires, l’utilisation rationnelle des index est cruciale pour améliorer les performances des bases de données. Cet article explique comment utiliser les index MySQL de manière rationnelle, optimise les performances de la base de données et fournit quelques règles de conception aux étudiants en technique. 1. Pourquoi utiliser des index ? Un index est une structure de données qui utilise

Techniques d'optimisation de l'efficacité des requêtes de données dans MySQL Techniques d'optimisation de l'efficacité des requêtes de données dans MySQL Jun 15, 2023 am 08:56 AM

MySQL est l'une des bases de données relationnelles les plus populaires du secteur, et l'optimisation de l'efficacité des requêtes de données est l'une des compétences importantes pour utiliser et gérer MySQL. Dans le processus actuel de développement, d'exploitation et de maintenance, comment optimiser l'efficacité des requêtes de données MySQL est un sujet qui nécessite une exploration et un résumé continus. Cet article présentera quelques techniques courantes d'optimisation de l'efficacité des requêtes de données. Optimisation de l'index L'index est un moyen important pour améliorer l'efficacité des requêtes de données. Dans MySQL, l'utilisation d'index peut éviter l'analyse complète des tables, améliorant ainsi l'efficacité des requêtes. L'index est un nombre indépendant

Comment créer un index unique dans MySQL pour garantir l'unicité des données Comment créer un index unique dans MySQL pour garantir l'unicité des données Mar 15, 2024 pm 12:45 PM

Titre : Méthodes et exemples de code pour créer des index uniques dans MySQL afin de garantir l'unicité des données. Dans la conception de bases de données, il est très important de garantir l'unicité des données, ce qui peut être obtenu en créant des index uniques dans MySQL. Un index unique peut garantir que la valeur d'une certaine colonne (ou combinaison de colonnes) dans la table est unique. Si vous essayez d'insérer des valeurs en double, MySQL empêchera cette opération et signalera une erreur. Cet article explique comment créer un index unique dans MySQL, tout en fournissant des exemples de code spécifiques. Qu'est-ce qu'un index unique ? Un index unique est un type d'index qui

See all articles