Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 15920|Yanıt: 1

[Kaynak] SQL ifadelerinde count(0) ve count(*) kavramlarının yanlış anlaşılması

[Bağlantıyı kopyala]
Yayınlandı 10.08.2017 13:29:00 | | |
Son zamanlarda sayı fonksiyonu çok kullanılmıştır ve sayılacak sayı nispeten büyük olduğunda, count(*)'nin daha fazla zaman aldığı, count(1)'in ise daha az zaman aldığı görülür.

Bazı belgelerde şu ifadeler yer alır:

Veri tablonuzda birincil anahtar yoksa, count(1) count(*)'den daha hızlıdır.  
Eğer birincil anahtar varsa, birincil anahtar (ortak birincil anahtar) da count(*)'dan daha hızlıdır.  
Tablonuzda sadece bir alan varsa, count(*) en hızlıdır  
count(*) count(1) ikisini karşılaştırın. Asıl önemli olan, (1)'e karşılık gelen veri alanlarını saymaktır.  
Eğer count(1) bir poliindeks ise, id, count(1) daha hızlı olmalıdır. Ama fark çok küçük.  
Çünkü count(*), alan otomatik olarak şu şekilde optimize edilir. Yani count(?), count(*) kullanmaya gerek yok, SQL optimizasyonu tamamlamanıza yardımcı olur

  Sayım Detayları:
count(*) tabloda bulunan tüm satırların, sıfır değere sahip satırlar dahil olmak üzere, toplam sayısını döndürecektir,Ancak, count (sütun adı) tablodaki tüm satır sayısını döndürür, null hariç(Varsayılan değere sahip sütunlar da sayılır).
Farklı bir sütun adı olursa, sonuç null değer ve çoğaltılmış veri kaldırıldıktan sonra sonuç olur


Geçmişte, blogda herkesin count(0) kullanması önerildiğini ve sorgu verimliliğinin nispeten yüksek olduğunu bilmiyordum

Bugün count(0) kullanmanın yanlış bir anlama olduğu tespit edilmiştir!!
count(0) İstatistiklerin ilk sütunu boş değildir

count(*) yerine number(column name) veya count(constant) kullanmayın,

count(*), SQL92 tarafından tanımlanan standart satır sayısının sözdizimidir ve veritabanı ile hiçbir ilgisi yoktur, NULL ve non-NULL.

Not: count(*) NULL değerli satırları sakarken, count(column name) NULL değerli satırları saymaz.

Bu nedenle, gelecekte tüm istatistikleri yaptığınızda ve boş veriyi ekartı yokken, dürüstçe sayımı (*) kullanmak daha iyidir!!








Önceki:js'deki let ve var tanım değişkenleri arasındaki fark
Önümüzdeki:jquery, 10'a kadar veri göstermek için tablo uygular
Yayınlandı 10.08.2017 13:54:00 |
öğretim                 
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com