Siz, 2 satır “select…where...” yazmaya üşenip, tabloya F4 çekenler.!
Tablodaki kayıt sayısından habersiz sonra ‘Data’ tabına girenler.!
Bu da yetmezmiş gibi, bulduğu ilk kolona order by yapanlar.!
Selam olsun sizlere…
O tablonun 78 milyon kayıt içerdiğinden haberiniz var mıydı?
Peki yaptığınız hareketin “select * from 78milyon order by 78milyondate;” anlamına geldiğinin farkında mısınız?
- Bu iki soruya da cevabınız “evet“se, tek bahaneniz kalıyor: O da en fazla 6 aylık IT iş tecrübeniz var demektir.! Yöneticiniz henüz bu konuyu size anlatmamış demek ki.
* Bir de F4 bile yapmadan, direkt “select * from 78milyon order by 78milyondate;” yapanlar var. Onlara yorum yapmayacağım bu yazıda..!
Bu masum kaçamağınız, size nelere mal olacak hemen anlatayım:
* Muhtemelen Toad ekranınız beyazlaşacak, sonra da donacak. Çaktırmadan Toad'ı kökten kapatıp sorunu çözdüğünüzü düşüneceksiniz. Ta ki Dba'lerden gelen o acı telefona kadar.! * Siz Toad'ı kapattım sansanız bile, yaptığınız hareketin oluşturduğu "select * from 78milyon order by 78milyondate;" sorgusu, arkada DB'de çalışmaya devam edecek. * Önce Dba'lere, sonra da Bilgi Güvenliği uygulamalarına "alert"ler düşmeye başlayacak. * Dba'leriniz bu uzun süredir çalışan sorguyla ilgili sizden açıklama isteyecek. * Bu kadar büyük bir tabloya "full" gidilip, sonra yapılan "order by" işi, DB'de temp tablespace kullanımını tavan yaptıracak. Dba'leriniz bir de bunun için sizden açıklama isteyecek. * DB'de temp alanı kısıtlıysa, ya da temp'i o an kullanan yoğun işler varsa, uygulama da bundan etkilenecek.!
O zaman ne yapmak gerekiyor..
* Çalıştığınız tabloların tahmini kaç kayıt içerdiğinizi bilmeniz gerekiyor. * Bilen birinden öğrenemiyorsanız, "select count(*) from table;" diyerek kayıt sayısını çekebilirsiniz. Yarım dk içinde sonuç hala gelmediyse, elinizdeki bombanın farkına varmanız gerekiyor. * Mümkün oldukça F4 ile iş yapmaktan kaçınınız. 2 satır select'ini yazmaktan üşenmeyiniz. * Yazdığınız "select" sorgusuyla uygun kullanabileceğiniz "where" koşulunu öğrenip, sorgunuzu iyice daraltmanız gerekiyor. * Bundan sonra sorgunuza "order by" ekleyip sonucunu alabilirsiniz.
Selamımızı almayı unutmayın 🙂