oracle veritabanında sorguların sürekli hardparse olmasını nasıl engelleriz?
comments
1 references
// Comments are closed.
oracle veritabanında sorguların sürekli hardparse olmasını nasıl engelleriz?
// Comments are closed.
Programlama dilinden string içinde “select * from uye u where u.id = ” + 4 gibi sql sorgusu çağrılırsa yanlış hatırlamıyorsam sürekli olarak veri tabanı tarafında yeni bir sorgu gibi görülerek hard parse işlemi yapılıyor. Küçük de olsa sürekli bir performans sorununa yol açıyor. Onun yerine programlama dilinin/kütüphanelerin verdiği prepared statement yapılarının kullanımı hem hard parse sorununu çözüyor hem de güvenlik açıklarını azaltıyor.
Yukarıdaki sorgu yerine “select * from uye u where u.id = ?” deyip sonra ? değerini vermek daha mantıklı olacaktır.
Java için örnek
String s = “select * from uye u where u.id = ?”;
PreparedStatement st = con.prepareStatement(s);
st.setInt(1, 123);
ResultSet rs = st.executeQuery();