Maison > base de données > tutoriel mysql > le corps du texte

Problème de pagination MySQL sous des millions de données

藏色散人
Libérer: 2019-04-17 17:23:34
avant
3718 Les gens l'ont consulté

Nous utilisons souvent la pagination pendant le processus de développement. La technologie de base consiste à utiliser la limite pour lire les données. Lors du test d'utilisation de la limite pour la pagination, les données suivantes ont été obtenues :

select * from news order by id desc limit 0,10
耗时0.003秒
select * from news order by id desc limit 10000,10
耗时0.058秒
select * from news order by id desc limit 100000,10 
耗时0.575秒
select * from news order by id desc limit 1000000,10
耗时7.28秒
Copier après la connexion

Nous avons été surpris de constater que lorsque le volume de données est important, plus le point de départ de la pagination dans MySQL est grand, plus le processus est lent. vitesse de requête. Pour les requêtes à partir de 1 million La vitesse prend déjà 7 secondes. C’est une valeur que nous ne pouvons pas accepter !

Plan d'amélioration 1

select * from news 
where id >  (select id from news order by id desc  limit 1000000, 1)
order by id desc 
limit 0,10
Copier après la connexion

Le temps de requête est de 0,365 seconde, l'amélioration de l'efficacité est très évidente ! ! Quel est le principe ? ? ?

Nous avons utilisé des conditions pour filtrer l'identifiant. Dans la sous-requête (sélectionner l'identifiant dans l'ordre des nouvelles par limite d'identifiant desc 1000000, 1), nous avons uniquement interrogé le champ identifiant par rapport à la sélection * ou à la sélection de plusieurs champs. de surcharge de requête !

Plan d'amélioration 2

Convient aux systèmes avec identifiants continus, extrêmement rapide !

select * from news 
where id  between 1000000 and 1000010 
order by id desc
Copier après la connexion

ne convient pas aux requêtes avec des conditions et des identifiants discontinus. Très vite !

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!

Étiquettes associées:
source:hcoder.net
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!