Maison > Article > base de données > Problème de pagination MySQL sous des millions de données
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秒
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
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
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!