SORU
20 Mayıs 2011, Cuma


En hızlı, çok büyük bir tablodaki satır sayısını saymak için tam yolu?

SELECT COUNT(*) FROM TABLE_NAME tabloya çok sayıda satır ve sütunlar vardır yavaş olacak Devlet bu makale ile karşılaştım.

Satır [yaklaşık 15 sütunlu] milyarlarca içerir bile olabilecek bir tablo var. Daha iyi bir yolu olabilirKESİNbir tablonun satır sayısını saymak?

Lütfen cevap vermeden önce bir düşünün

  • Veritabanı bir satıcı arıyorum bağımsız çözüm. Eğer OK kapsarMySQL,Oracle,MS SQL Server. Ama eğer varsagerçektenhiçbir veritabanı satıcı bağımsız çözüm o zaman ben farklı çözümler razı olacak farklı veritabanı sunucuları için.

  • Ben herhangi bir diğer harici araç kullanmak bunu yapmak için. Esas arıyorum SQL tabanlı bir çözüm.

  • Veritabanı tasarımı normale edemem herhangi bir daha fazla. Zaten 3NF ve dahası bir yer. kod çok önceden yazılmıştır etrafında.

CEVAP
20 Mayıs 2011, Cuma


Basit cevap:

  • veritabanı satıcı bağımsız çözüm = standart 3 ** = kullanmak
  • vardıryaklaşıkSQL çözümleri Server Ama Kapsam dışına COUNT(*) = kullanmayın

Notlar:

Her ihtimale karşı COUNT(1) = COUNT(*) = COUNT(PrimaryKey)

Düzenleme:

Sunucu örnek (1.4 milyar satır, 12 sütun) SQL

SELECT COUNT(*) FROM MyBigtable WITH (NOLOCK)
-- NOLOCK here is for me only to let me test for this answer: no more, no less

1 = 1,401,659,700 dakika, 5:46 çalışır

--Note, sp_spaceused uses this DMV
SELECT
   Total_Rows= SUM(st.row_count)
FROM
   sys.dm_db_partition_stats st
WHERE
    object_name(object_id) = 'MyBigtable' AND (index_id < 2)

2 çalışır, hem de 1 saniye altında, 1,401,659,670 = say

İkincisi = yanlış az satır var. Ya da daha eskisi gibi olmayacaktı yazar (siler saatleri dışında burada yapılır) bağlı olarak

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boburnham

    boburnham

    11 Temmuz 2006
  • Jaclyn W

    Jaclyn W

    5 Mayıs 2006
  • LimeFire

    LimeFire

    2 ŞUBAT 2012