Exploration des performances de pagination MySQL
La pagination est souvent utilisée dans notre programmation. Cet article vous amènera à discuter des performances de la pagination MySQL, en espérant aider tout le monde.
Méthodes de pagination courantes :
1. Méthode Escalator
La méthode de l'escalator ne propose généralement que deux modes de navigation : page précédente/page suivante. Certains produits ne proposent même pas la fonction de page précédente, mais proposent uniquement une méthode « plus/plus », et il existe également un chargement automatique déroulant. D'autres méthodes peuvent techniquement être résumées sous le nom de méthodes d'escalier mécanique.
La méthode de l'escalator est relativement simple et efficace en termes de mise en œuvre technique. Il suffit d'aller une page plus loin en fonction du décalage du dernier élément de la page actuelle. Écrit en SQL, il peut être similaire à
SELECT*FROMLIST_TABLEWHEREid> offset_id LIMIT n;
1. Méthode d'ascenseur
Une autre méthode d'acquisition de données se reflète dans le produit sous la forme d'une méthode de tournage de page précise, telle que 1, 2, 3...n. En même temps, l'utilisateur peut également. saisir directement n pages dans la navigation. La plupart des scènes en Chine utilisent des ascenseurs, mais le coût technique de mise en œuvre des ascenseurs est relativement élevé.
Dans MySQL, le b-tree généralement mentionné est généralement b+tree dans l'implémentation du moteur de stockage.
Lors de l'utilisation de la méthode de l'ascenseur, lorsque l'utilisateur spécifie de se tourner vers la nième page, il n'y a pas de moyen direct d'adresser l'emplacement. Au lieu de cela, il doit compter un par un à partir du premier étage et scanner pour compter. *page pour obtenir les données Cela vient de commencer, donc l'efficacité n'est pas élevée.
Technologie de pagination traditionnelle (méthode d'ascenseur)
Tout d'abord, le frontal doit vous transmettre l'entité de pagination et les conditions de requête
//分页实体 structFinanceDcPage{ 1:i32 pageSize,//页容量 2:i32 pageIndex,//当前页索引 }
Ensuite, vous devez renvoyer le nombre total de requêtes au front-end
SELECTCOUNT(*)FROMmy_tableWHEREx= y ORDERBYid;
Puis revenez Spécifiez le nombre de pages vers le front-end :
SELECT*FROMmy_tableWHEREx= y ORDERBYdate_colLIMIT (pageIndex - 1)* pageSize, pageSize;
Les résultats interrogés par les deux instructions SQL ci-dessus doivent être renvoyés à l'entité de pagination frontale, ainsi que les résultats d'une seule page Set
//分页实体 structFinanceDcPage{ 1:i32 pageSize,//页容量 2:i32 pageIndex,//当前页索引 3:i32 pageTotal,//总页数 4:i32 totalRecod,//总条数 }
Méthode de requête traditionnelle, seule la valeur pageIndex change à chaque requête, c'est-à-dire , offset limite, décalage de num
tel que limite 0,10 ; limite 10,10 ;
Les modifications ci-dessus entraîneront un écart dans le temps d'exécution de chacun. requête. Plus la valeur de décalage est grande, plus cela prendra du temps, comme limit10000 ,10 Il est nécessaire de lire 10010 éléments de données pour obtenir les 10 éléments de données souhaités.
Méthode d'optimisation
Dans la méthode traditionnelle, nous avons appris que la clé de l'efficacité est que le programme parcourt beaucoup de données inutiles et trouve la clé Cliquez sur Alors commencez ici.
S'il n'est pas nécessaire d'utiliser l'ascenseur, nous pouvons utiliser l'escalier roulant pour améliorer les performances.
Mais dans la plupart des cas, le formulaire d'ascenseur peut mieux répondre aux besoins des utilisateurs, nous devons donc trouver un autre moyen d'optimiser le formulaire d'ascenseur.
Optimisation basée sur les méthodes traditionnelles
Les méthodes d'optimisation évoquées ci-dessus sont soit difficiles à répondre aux besoins des utilisateurs, soit trop complexes à mettre en œuvre, donc Si la quantité de données n'est pas particulièrement importante, comme des millions de données, il n'est en fait pas nécessaire d'utiliser la méthode d'optimisation ci-dessus.
Les méthodes traditionnelles sont suffisantes, mais elles peuvent également nécessiter une optimisation. Par exemple :
orderby optimisation
SELECT*FROMpa_dc_flowORDERBYsubject_codeDESCLIMIT100000,5
ORDERBY est utilisé dans cette instruction Mots-clés, alors ce qu'il faut trier est très important Si vous triez des ID à incrémentation automatique, cette instruction n'a pas besoin d'être optimisée. S'il s'agit d'un index ou même d'un non-index, elle doit être optimisée.
Tout d'abord, vous devez vous assurer qu'il s'agit d'un index, sinon ce sera vraiment lent. Ensuite, s'il s'agit d'un index, mais qu'il n'est pas aussi ordonné qu'un ID auto-incrémenté, il doit alors être réécrit dans l'instruction suivante.
SELECT*FROMpa_dc_flowINNERJOIN(SELECTidFROMpa_dc_flowORDERBYsubject_codeDESCLIMIT100000,5)ASpa_dc_flow_idUSING(id);
Ce qui suit est l'EXPLAIN pour deux SQL
Nous pouvons voir sur l'image que le deuxième SQL peut scanner beaucoup moins de pages.
En fait, cela implique le problème d'optimisation de order by. L'index subject_code n'est pas utilisé dans le premier SQL. Si vous sélectionnez plutôt subject_code... l'index est utilisé. Ce qui suit est l'optimisation de la commande par.
order by后的字段,如果要走索引,须与where 条件里的某字段建立复合索引!!或者说orcerby后的字段如果要走索引排序,它要么与where条件里的字段建立复合索引【这里建立复合索引的时候,需要注意复合索引的列顺序为(where字段,order by字段),这样才能满足最左列原则,原因可能是order by字段并能算在where 查询条件中!】,要么它自身要在where条件里被引用到!
表asubject_code为普通字段,上面建有索引,id是自增主键
select*fromaorderbysubject_code//用不上索引 selectidfromaorderbysubject_code//能用上索引 selectsubject_codefromaorderbysubject_code//能用上索引 select*fromawheresubject_code= XX orderbysubject_code//能用上索引
意思是说order by 要避免使用文件系统排序,要么把order by的字段出现在select后,要么使用order by字段出现在where 条件里,要么把order by字段与where条件字段建立复合索引!
第二条sql就是巧妙的利用第二种方式利用上了索引。 select id from a order bysubject_code,这种方式
count优化
当数据量非常大时,其实可以输出总数的大概数据,利用explain语句,他并没有真正去执行sql,而是进行的估算。
相关推荐:
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!

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

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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





Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

MySQL est un système de gestion de la base de données relationnel open source, principalement utilisé pour stocker et récupérer les données rapidement et de manière fiable. Son principe de travail comprend les demandes des clients, la résolution de requête, l'exécution des requêtes et les résultats de retour. Des exemples d'utilisation comprennent la création de tables, l'insertion et la question des données et les fonctionnalités avancées telles que les opérations de jointure. Les erreurs communes impliquent la syntaxe SQL, les types de données et les autorisations, et les suggestions d'optimisation incluent l'utilisation d'index, les requêtes optimisées et la partition de tables.

Redis utilise une architecture filetée unique pour fournir des performances élevées, une simplicité et une cohérence. Il utilise le multiplexage d'E / S, les boucles d'événements, les E / S non bloquantes et la mémoire partagée pour améliorer la concurrence, mais avec des limites de limitations de concurrence, un point d'échec unique et inadapté aux charges de travail à forte intensité d'écriture.

La position de MySQL dans les bases de données et la programmation est très importante. Il s'agit d'un système de gestion de base de données relationnel open source qui est largement utilisé dans divers scénarios d'application. 1) MySQL fournit des fonctions efficaces de stockage de données, d'organisation et de récupération, en prenant en charge les systèmes Web, mobiles et de niveau d'entreprise. 2) Il utilise une architecture client-serveur, prend en charge plusieurs moteurs de stockage et optimisation d'index. 3) Les usages de base incluent la création de tables et l'insertion de données, et les usages avancés impliquent des jointures multiples et des requêtes complexes. 4) Des questions fréquemment posées telles que les erreurs de syntaxe SQL et les problèmes de performances peuvent être déboguées via la commande Explication et le journal de requête lente. 5) Les méthodes d'optimisation des performances comprennent l'utilisation rationnelle des indices, la requête optimisée et l'utilisation des caches. Les meilleures pratiques incluent l'utilisation des transactions et des acteurs préparés

MySQL est choisi pour ses performances, sa fiabilité, sa facilité d'utilisation et son soutien communautaire. 1.MySQL fournit des fonctions de stockage et de récupération de données efficaces, prenant en charge plusieurs types de données et opérations de requête avancées. 2. Adoptez l'architecture client-serveur et plusieurs moteurs de stockage pour prendre en charge l'optimisation des transactions et des requêtes. 3. Facile à utiliser, prend en charge une variété de systèmes d'exploitation et de langages de programmation. 4. Avoir un solide soutien communautaire et fournir des ressources et des solutions riches.

Apache se connecte à une base de données nécessite les étapes suivantes: Installez le pilote de base de données. Configurez le fichier web.xml pour créer un pool de connexion. Créez une source de données JDBC et spécifiez les paramètres de connexion. Utilisez l'API JDBC pour accéder à la base de données à partir du code Java, y compris l'obtention de connexions, la création d'instructions, les paramètres de liaison, l'exécution de requêtes ou de mises à jour et de traitement des résultats.

Le processus de démarrage de MySQL dans Docker se compose des étapes suivantes: Tirez l'image MySQL pour créer et démarrer le conteneur, définir le mot de passe de l'utilisateur racine et mapper la connexion de vérification du port Créez la base de données et l'utilisateur accorde toutes les autorisations sur la base de données

L'installation de MySQL sur CENTOS implique les étapes suivantes: Ajout de la source MySQL YUM appropriée. Exécutez la commande YUM Install MySQL-Server pour installer le serveur MySQL. Utilisez la commande mysql_secure_installation pour créer des paramètres de sécurité, tels que la définition du mot de passe de l'utilisateur racine. Personnalisez le fichier de configuration MySQL selon les besoins. Écoutez les paramètres MySQL et optimisez les bases de données pour les performances.
