Döngüsel sorgular nedir, nasıl oluşur?

Bir döngü içinde mysql sunucusuna gönderilen sorgulara döngüsel sorgular ismini veriyorum, bu tip sorgular tehlikelidir çünkü kaynak, zaman tüketirler ve kod yazımı sırasında dikkat çekmezler, programcı işini en kısa sürede bitirmeye odaklandığı için, o an ihtiyacı olan veriyi sorgu ile almaktan çekinmeyecektir. Çoğu zaman da döngülerle çalıştığından, bir döngünün içinde, koşula bağlı olarak, defalarca sorgu gönderecektir. Geliştirme aşamasında veri ve kullanıcı sayısı az olduğu için performansta düşüş hissedilmez, fakat uygulama web’e konulduğunda biraz yoğun bir sistemde geç açılan veya hiç açılmayan sayfalara neden olacaktır.

Nasil engellenebilir?
Elbette en basit şekilde döngü içinde sorgu göndermeyerek, bunun içinde geliştirme aşamasında gönderdiğiniz sorguları izlemeli, gereksiz sorgulardan kaçınmalısınız. Kendi yazacağınız veya kullandığınız apinin gönderdiği sorguları raporlama özelliği, ADOdb‘nin böyle bir özelliği var, sorguların izlenmesini (debug) kolaylaştıracaktır. Bu arada herzaman döngüsel sorgular kullanılmaz diye bir tezim yok, bu tip sorgulara çoğunlukla update sorgularında ihtiyaç duyuluyor, fakat çoğu select ve insert sorgusu kodlama ile tek bir sorguya indirilebilir.

Örnekler
En basit örneği phpMyAdmin‘de görmüşsünüzdür. phpMyAdmin verileri export ederken adına extended inserts, Türkçesinde “Tablo ismini ve INSERT deyimini sadece bir kez kullan” olarak geçiyor, denilen aynı anda birden fazla satır oluşturan bir sorgu üretebilir. MySQL 3.22.5′den sonraki versiyonlarda geçerli olan, bu sorgu birden fazla insert yapmaya olanak sağlar.

Select sorgularını engellemek için join ise kavramını öğrenmemiz gerekiyor, zaten döngüsel sorgulara çoğu zaman farklı tablolarda bulunan veride önce bir veriyi çekip sonra ilişkili diğer veri/veriler için başka sorgular kullanılan durumlarda rastlıyorum, halbuki baştan yapıyı doğru kurarak join ile tek sorguda problem giderilebilir.