Bugün, biraz özel yetenek gerektiren bir konu üzerinde konuşacağız.!
Bu yazı için, hafızamızı baya bir zorlayıp gençligimizden özel kareleri hatırlamak gerekiyordu. Lakin veritabanlarımıza gelen sorgulara biraz bakınca, buna fazla ihtiyaç kalmadı..!
Evet, bu konu iş tecrübesiyle ters orantılı olarak kendini gösteren bir yetenek.!
Yani ne kadar az tecrübeniz varsa o kadar rahat “bitmeyen sorgu” yazabiliyorsunuz..! (istisnalara hep saygı duymuşumdur.!)
Konumuza gelelim…
Bitmeyen sorguları Pl/Sql kullanarak, loop’lar kullanarak herkes yazıyor artık. Bu, işin kolay kısmı. Bunu geçiyorum.
Biz burada, direkt Sql kullanarak nasıl “bitmeyen sorgular”a benzer sorgular yazılır, bunun üzerinde duracağız. Aslında bazı özel teknikleri kullanarak sizler de başarabilirsiniz.
İşte en sık kullanılan bazı methodlar:
- Tablonun kayıt sayısına bakmadan, tablodan direkt “select * …” sorgusunu çekebilirsiniz.! Bir de “order by” yaparsanız, işinizi garantiye almış olursunuz.!
select * from 134milyonluktablo order by date;
- İndexsiz milyonlar kayıtlık tablolara “full” gidebilirsiniz.
- Bol bol “kartezyen join” kullanabilirsiniz.
- “dblink” kullanarak milyonlar kayıtlı tablolarda işlemler yapabilirsiniz.
- Sorgularda çok fazla tabloyu “join” etmeyi deneyebilirsiniz.
- Israrla “bind” kullanmaktan kaçınıp, “literal” değerlerle sorgular yazabilirsiniz.
- İndex kullanımını olumsuz etkileyen yöntemleri kullanabilirsiniz.
- “Deadlock”‘lar oluşturacak şekilde sorgular yazabilirsiniz.
- Sorgularınızı bol bol “lock”‘lanmaya neden olacak şekilde yapılandırabilirsiniz.
- “Trigger” bulunan tablolara bolca dml yapan sorgular yazabilirsiniz.
- Bu konuda isterlerse Dba’leriniz de sizlere yardımcı olabilir.
- Tablo-İndex İstatistiklerini güncel tutmayarak, sorgu planlarının düzgün çalışmasını engelleyebilirler. Ama Dba’lerinizin genelde bu durumlar için önlemleri vardır. Size yardımcı olamayabilirler.
- gibi…
Sizin hayal dünyanızı kısıtlamak istemediğimiz için bu kadar örnek yeterli. Daha güzel örnekler verecek olan vardır mutlaka. Örneklerinizi bizimle paylaşabilirsiniz.
Dipnot: Bunları test edecekseniz, önce test ortamınızda test ediniz. Çıkacak sonuçlardan hiçbir şekilde biz sorumlu değiliz 🙂