Oracle'da (PL/SQL) Bir Satırın Varlık Bilgisini Alma İpucu

Bir veritabanı kaydının sadece varlığıyla yani olup olmadığıyla ilgileniyorsak ilk akla gelen strateji, count(*) yani kayıt sayısını alıp bu değerin sıfırdan büyük olup olmaması karşılaştırmasını yapmak.

KISI tablosunda GRUP alanı 1 olan kayıt var mı diye merak ettik diyelim.

select count(*) from KISI k where k.GRUP=1

Bu sorgu eğer KISI tablosunda GRUP alanı 1 olan çok fazla kayıt varsa uzun sürecektir. Halbuki biz sadece varlığını merak ettiğimiz için gereksizce beklemiş olma ihtimalimiz var.

Bu durumu çözmek için rownum anahtar kelimesini kullanabiliriz. rownum ile sorguyu daha da kısıtlayarak belli bir satır numarasından fazlasını almamayı sağlayabiliriz. Yani satır numarası 1 olan kaydın sayısını (count(*)) where koşulunda rownum=1 ile kısıtlayarak çekersek en az bir tane bu tipte kayıt olduğunu ya da hiç olmadığını anlayabiliriz;

select count(*) from KISI k where k.GRUP=1 and rownum=1

Bu sorgu sonucunda elimize ya 0 ya da 1 değeri gelecektir. 0 olduğunda herhangi bir kayıt sayılmamış yani hiç bu koşula uygun kayıt yok demektir. 1 ise belki birden fazla vardır fakat en azından bir tane bu koşula uygun kayıt vardır demektir. İlgilendiğimiz bilgi varlık olduğundan bu sorgu büyük kayıtlara sahip olabilecek tablolarda daha hızlı cevap verecektir.

Kaynak: https://stackoverflow.com/questions/1088156/quickest-query-to-check-for-...

Yeni yorum ekle

Filtered HTML

  • Web sayfası ve e-posta adresleri otomatik olarak bağlantıya çevrilir.
  • İzin verilen HTML etiketleri: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Satırlar ve paragraflar otomatik olarak bölünür.

Plain text

  • Hiç bir HTML etiketine izin verilmez
  • Web sayfası ve e-posta adresleri otomatik olarak bağlantıya çevrilir.
  • Satırlar ve paragraflar otomatik olarak bölünür.
Bu formu göndererek Mollom gizlilik şartlarını kabul etmiş oluyorsunuz.