Maison > base de données > tutoriel mysql > Pourquoi les requêtes MySQL avec des décalages LIMIT importants sont-elles si lentes ?

Pourquoi les requêtes MySQL avec des décalages LIMIT importants sont-elles si lentes ?

Linda Hamilton
Libérer: 2024-12-13 01:17:09
original
558 Les gens l'ont consulté

Why Are MySQL Queries with Large LIMIT Offsets So Slow?

Impact d'un décalage LIMIT plus élevé sur la vitesse des requêtes MySQL

Lors de l'interrogation d'une grande table MySQL avec un décalage LIMIT croissant en conjonction avec ORDER BY, les utilisateurs peuvent rencontrer un ralentissement notable de la vitesse des requêtes. Cela est particulièrement évident lorsque la table dépasse 16 millions d'enregistrements ou a une taille d'environ 2 Go.

Par exemple, la requête suivante avec un petit décalage s'exécute beaucoup plus rapidement que celle avec un décalage plus grand :

SELECT * FROM large ORDER BY `id` LIMIT 0, 30
Copier après la connexion
SELECT * FROM large ORDER BY `id` LIMIT 10000, 30
Copier après la connexion

Bien que les deux requêtes ne récupèrent que 30 lignes, cette dernière prend beaucoup plus de temps malgré la surcharge négligeable de ORDER BY.

Pour optimiser ce scénario, envisagez d'utiliser une approche alternative :

  1. Stockez le dernier ID d'un ensemble de lignes récupéré (par exemple, lastId = 530).
  2. Modifiez la requête pour inclure la condition WHERE id > lastId.
SELECT * FROM large WHERE `id` > lastId LIMIT 0, 30
Copier après la connexion

En maintenant systématiquement un décalage de zéro, la requête s'exécutera systématiquement à une vitesse optimale, même lors de la récupération de grandes quantités de données par itérations.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal