Masamda birkaç milyon satır içeren satır sayısını saymanın hızlı bir yolunu istiyorum. Sorunumu çözecek gibi görünüyordu Stack Overflow, " MySQL: satır sayısını saymanın en hızlı yolu " yazısını buldum. Bayuah bu cevabı verdi:
SELECT
table_rows "Rows Count"
FROM
information_schema.tables
WHERE
table_name="Table_Name"
AND
table_schema="Database_Name";
Bunu sevdim çünkü tarama yerine bir arama gibi görünüyor, bu yüzden hızlı olmalı, ama test etmeye karar verdim
SELECT COUNT(*) FROM table
performans farkının ne kadar olduğunu görmek için.
Maalesef aşağıda gösterildiği gibi farklı cevaplar alıyorum :
Soru
Cevaplar neden yaklaşık 2 milyon satırdan farklı? Tam bir tablo tarama gerçekleştiren sorgu daha doğru sayı olduğunu tahmin ediyorum, ama bu yavaş sorguyu çalıştırmak zorunda kalmadan doğru numarayı alabilirsiniz bir yolu var mı?
Koştum ANALYZE TABLE data_302
, 0.05 saniyede tamamlandı. Sorguyu yeniden çalıştırdığımda, artık 34384599 satırın çok daha yakın bir sonucunu alıyorum, ancak yine de select count(*)
34906061 satırlarıyla aynı sayı değil . Analiz tablosu hemen geri dönüyor ve arka planda işliyor mu? Bu bir test veritabanı ve şu anda yazılmıyor bahsetmeye değer hissediyorum.
Kimse sadece bir masanın ne kadar büyük olduğunu söyleyen bir durumda olup olmadığını umursamayacak, ancak veritabanını sorgulamak için "eşit boyutta" eşzamansız sorgular oluşturmak için bu rakamı kullanacak bir kod koduna satır sayısını iletmek istedim paralel olarak, Alexander Rubin'in paralel sorgu yürütmesiyle yavaş sorgu performansını artırmada gösterilen yönteme benzer . Olduğu gibi, ben sadece en yüksek kimliği almak SELECT id from table_name order by id DESC limit 1
ve benim tablolar çok parçalanmış umuyoruz.
NUM_ROWS
colum