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. COUNT(*)
les performances sur de très grandes tables. 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>
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>
(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!