Maison > base de données > tutoriel mysql > Comment puis-je compter efficacement les lignes dans des tables de base de données extrêmement volumineuses ?

Comment puis-je compter efficacement les lignes dans des tables de base de données extrêmement volumineuses ?

Linda Hamilton
Libérer: 2025-01-14 17:01:45
original
604 Les gens l'ont consulté

How Can I Efficiently Count Rows in Extremely Large Database Tables?

Stratégie d'optimisation des statistiques du nombre de lignes de grand tableau

Le comptage de lignes dans de grandes tables de base de données peut poser des problèmes de performances. Si certains articles recommandent d'utiliser SELECT COUNT(*) avec prudence, sa rapidité reste un souci pour les tableaux comportant un grand nombre de lignes et de colonnes. Cet article vise à explorer une méthode indépendante du fournisseur de base de données pour compter avec précision les lignes dans les grandes tables.

Solution indépendante du fournisseur de base de données

Le moyen le plus simple et le plus fiable est d'utiliser la fonction COUNT(*) standard. Les systèmes de bases de données modernes optimisent cette fonction même pour les grandes tables, car il leur suffit de lire suffisamment de données pour estimer le nombre de lignes. Par conséquent, COUNT(*) est l’option préférée.

approximation SQL Server (hors du cadre de cet article)

Bien qu'il existe certaines approximations potentielles pour SQL Server, ces méthodes dépassent le cadre de cet article.

Autres notes

  • COUNT(1) et COUNT(PrimaryKey) sont équivalents à COUNT(*) en termes de nombre de lignes.
  • L'utilisation du partitionnement de table peut améliorer COUNT(*) les performances sur de très grandes tables.
  • Si le tableau est mis à jour fréquemment, le nombre de lignes obtenues à partir de COUNT(*) peut ne pas être complètement précis en raison de transactions en attente.

Exemple de serveur SQL

Pour une table comportant environ 1,4 milliard de lignes et 12 colonnes, la requête suivante utilisant COUNT(*) avec l'indice NOLOCK s'est terminée en 5 minutes 46 secondes :

<code class="language-sql">SELECT COUNT(*) FROM MyBigtable WITH (NOLOCK)</code>
Copier après la connexion

Alternativement, la requête suivante utilisant la vue de gestion dynamique (DMV) du système peut être complétée en moins d'une seconde :

<code class="language-sql">SELECT
   Total_Rows = SUM(st.row_count)
FROM
   sys.dm_db_partition_stats st
WHERE
    object_name(object_id) = 'MyBigtable' AND (index_id</code>
Copier après la connexion

(Remarque : la deuxième instruction SQL est incomplète et une partie du code est manquante dans le texte original)

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