tl; Dr.
- Eğer veri kullanımına ihtiyacınız olmayacağını biliyorsanız
count
.
- Veri kullanımını kullanacağınızı veya kullandığınızı biliyorsanız
length
.
- Ne yaptığınızı bilmiyorsanız, kullanın
size
...
Miktar
Select count(*)...
DB'ye bir sorgu gönderme ile ilgilidir . Verilere ihtiyacınız yoksa sadece sayım için gidilecek yol.
Örnek: yeni mesaj sayısı, yalnızca bir sayfa görüntülenecek toplam öğe vb.
uzunluk
Gerekli verileri, yani sorguyu gerektiği gibi yükler ve sonra sayar. Verileri kullanıyorsanız gidilecek yol.
Örnek: Tam olarak yüklenmiş bir tablonun özeti, görüntülenen verilerin başlıkları, vb.
boyut
Verilerin yüklenmiş olup olmadığını (yani zaten raylarda) kontrol eder, sonra sayın, aksi takdirde sayı çağırır. (artı diğer kayıtlarda belirtilen tuzaklar).
def size
loaded? ? @records.length : count(:all)
end
Sorun ne?
Doğru sırada yapmazsanız DB'ye iki kez vuruyor olabilirsiniz (örneğin, oluşturulan tablonun üstündeki bir tablodaki öğe sayısını oluşturursanız, DB'ye etkili bir şekilde 2 çağrı gönderilir).
size
yine de duruma uyum sağlar, o zaman ne gerek için vardırlength
vecount
hiç?