MySQL优化之延迟索引和分页优化
什么是延迟索引?使用索引查询出来数据,之后把查询结果和同一张表中数据进行连接查询,进而提高查询速度!
什么是延迟索引?使用索引查询出来数据,之后把查询结果和同一张表中数据进行连接查询,进而提高查询速度!
分页是一个很常见功能,select ** from tableName limit ($page - 1 ) * $n ,$n
通过一个存储过程插入10000条数据进行测试:
create table smth1 (
id int auto_increment ,
ver int(11) default null,
content varchar(1000) not null,
intro varchar(1000) not null,
primary key(id),
key idver(id,ver)
)engine = innodb default charset = utf8;
create procedure smthTest1()
begin
declare num int default 100001;
while num set num := num +1;
insert into smth1 values (num ,num,'我是*****','我是谁');
end while ;
end;
查询:
mysql> show profiles;
+----------+------------+----------------------------------------------+
| Query_ID | Duration | Query |
+----------+------------+----------------------------------------------+
| 1 | 0.002006 | select id ,content from smth1 limit 1000,10 |
| 2 | 0.030106 | select id ,content from smth1 limit 5000,10 |
| 3 | 0.042428 | select id ,content from smth1 limit 9000,10 |
| 4 | 0.01297225 | select id ,content from smth1 limit 10000,10 |
| 5 | 0.13077625 | select id ,content from smth1 limit 20000,10 |
可见随着查询$page 变大,时间会越来越大!
怎样避免这种情况?
一般我们数据库里面数据都不会直接删除,数据时很宝贵的,不舍得删除,另一方便能提高查询数据
先利用索引查询出来数据,再进行联合查询不就行了
select C.id,C.content from smth1 C inner join
(
select id from smth1 where id > 1000 limit 10
) as t on C.id = t.id ;
select C.id,C.content from smth1 C inner join
(
select id from smth1 where id > 5000 limit 10
) as t on C.id = t.id ;
select C.id,C.content from smth1 C inner join
(
select id from smth1 where id > 9000 limit 10
) as t on C.id = t.id ;
select C.id,C.content from smth1 C inner join
(
select id from smth1 where id > 10000 limit 10
) as t on C.id = t.id ;
select C.id,C.content from smth1 C inner join
(
select id from smth1 where id > 20000 limit 10
) as t on C.id = t.id ;
进行执行计划分析,没有一个大于1s的
11 | 0.04538625 | select C.id,C.content from smth1 C inner join
(
select id from smth1 where id > 5000 limit 10
) as t on C.id = t.id |
| 12 | 0.023278 | select C.id,C.content from smth1 C inner join
(
select id from smth1 where id > 9000 limit 10
) as t on C.id = t.id |
| 13 | 0.02320425 | select C.id,C.content from smth1 C inner join
(
select id from smth1 where id > 10000 limit 10
) as t on C.id = t.id |
| 14 | 0.001938 | select C.id,C.content from smth1 C inner join
(
select id from smth1 where id > 20000 limit 10
) as t on C.id = t.id |
此外,还会想到用in来查询而不是子查询,为什么不用in,,使用in会先查询出来一条id,之后再去和下面进行匹配,会进行smth1进行全表扫描!
--------------------------------------分割线 --------------------------------------
Ubuntu 14.04下安装MySQL
《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF
Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL
Ubuntu 14.04下搭建MySQL主从服务器
Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群
Ubuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb
MySQL-5.5.38通用二进制安装
--------------------------------------分割线 --------------------------------------
本文永久更新链接地址:

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)

Comment améliorer les performances en optimisant la fonction AVG dans MySQL MySQL est un système de gestion de base de données relationnelle populaire qui contient de nombreuses fonctions et fonctions puissantes. La fonction AVG est largement utilisée pour calculer des moyennes, mais comme elle doit parcourir l'ensemble des données, elle entraînera des problèmes de performances dans le cas de données à grande échelle. Cet article présentera en détail comment optimiser la fonction AVG via MySQL pour améliorer les performances. 1. Utiliser les index Les index constituent la partie la plus importante de l'optimisation MySQL.

MySQL est un système de gestion de bases de données relationnelles largement utilisé dans le domaine du e-commerce. Dans les applications de commerce électronique, il est crucial d'optimiser et de sécuriser MySQL. Cet article analysera l'expérience des projets d'optimisation et de sécurité de MySQL dans les applications de commerce électronique. 1. Conception de l'architecture de base de données d'optimisation des performances : dans les applications de commerce électronique, la conception de la base de données est la clé. Une conception raisonnable de la structure des tables et de l'index peut améliorer les performances des requêtes de la base de données. Dans le même temps, l'utilisation de la technologie de fractionnement et de partitionnement des tables peut réduire la quantité de données dans une seule table et améliorer l'efficacité des requêtes.

Optimisation MySQL basée sur le moteur TokuDB : amélioration des performances d'écriture et de compression Introduction : En tant que système de gestion de bases de données relationnelles couramment utilisé, MySQL est confronté à une pression d'écriture et à des exigences de stockage croissantes dans le contexte de l'ère du big data. Pour relever ce défi, le moteur TokuDB a vu le jour. Cet article explique comment utiliser le moteur TokuDB pour améliorer les performances d'écriture et de compression de MySQL. 1. Qu'est-ce que le moteur TokuDB ? Le moteur TokuDB est un moteur orienté Big Data conçu pour gérer des écritures élevées

MySQL est un système de gestion de bases de données relationnelles largement utilisé pour le développement d'applications Web et le stockage de données. Dans les applications pratiques, l'optimisation sous-jacente de MySQL est particulièrement importante, parmi laquelle l'optimisation avancée des instructions SQL est la clé pour améliorer les performances de la base de données. Cet article présentera quelques conseils et bonnes pratiques pour implémenter l'optimisation sous-jacente de MySQL, ainsi que des exemples de code spécifiques. Déterminer les conditions de requête Lors de l'écriture d'instructions SQL, vous devez d'abord définir clairement les conditions de requête et éviter d'utiliser des requêtes génériques illimitées, c'est-à-dire éviter d'utiliser « % » pour ouvrir la requête.

Comment optimiser la gestion des connexions MySQL MySQL est un système de gestion de bases de données relationnelles populaire largement utilisé dans divers sites Web et applications. Dans le processus de candidature actuel, la gestion du numéro de connexion MySQL est une question très importante, en particulier dans les situations de forte concurrence. Une gestion raisonnable du nombre de connexions peut améliorer les performances et la stabilité du système. Cet article présentera comment optimiser la gestion des numéros de connexion MySQL, y compris des exemples de code détaillés. 1. Comprendre la gestion des numéros de connexion Dans MySQL, le nombre de connexions fait référence au nombre de connexions que le système peut connecter en même temps.

Comment configurer et optimiser correctement la technologie de mise en mémoire tampon à double écriture de MySQL Introduction : La technologie de mise en mémoire tampon à double écriture de MySQL est une technologie importante qui améliore la sécurité et les performances des données. Cet article explique comment configurer et optimiser correctement la technologie de mise en mémoire tampon à double écriture de MySQL pour mieux protéger les données et améliorer les performances de la base de données. 1. Qu'est-ce que la technologie de mise en mémoire tampon à double écriture ? La technologie de mise en mémoire tampon à double écriture est une technologie d'optimisation des E/S de MySQL. Elle peut réduire considérablement le nombre d'opérations d'E/S sur disque et améliorer les performances d'écriture de la base de données. Lorsque MySQL effectue une opération d'écriture, commencez par

La base de données MySQL est une base de données relationnelle courante. À mesure que la quantité de données dans la base de données augmente et que les exigences des requêtes changent, l'optimisation sous-jacente devient particulièrement importante. Dans le processus d'optimisation sous-jacente de MySQL, l'optimisation des instructions SQL est une tâche cruciale. Cet article abordera les techniques et principes courants d’optimisation des instructions SQL et fournira des exemples de code spécifiques. Tout d'abord, l'optimisation des instructions SQL doit prendre en compte les aspects suivants : optimisation des index, optimisation des instructions de requête, optimisation des procédures stockées et des déclencheurs, etc. Dans ces aspects, nous aurons

MySQL est un système de gestion de bases de données open source largement utilisé pour stocker et gérer de grandes quantités de données. Cependant, lorsque vous utilisez MySQL, vous pouvez rencontrer divers problèmes, allant de simples erreurs de syntaxe à des problèmes et problèmes de performances plus complexes. Dans cet article, nous explorerons certains des problèmes et solutions MySQL les plus courants. Problèmes de connexion Les problèmes de connexion sont courants. Si vous ne parvenez pas à vous connecter au serveur MySQL, veuillez vérifier les points suivants : 1) Si le serveur MySQL est en cours d'exécution 2) Si la connexion réseau est normale 3) MySQ
