2012-02-10 23 views
8

Basit bir DB sınıfı oluşturmak için PDO sınıfını genişlettim ve şu anda veritabanında çalışan tüm sorgular için hazırla + çalıştır komutunu kullanıyorum. parametrelerin olmaması (örn. SELECT * FROM table).PDO :: query vs. PDOStatement :: execute (PHP ve MySQL)

Soru şu: PDO :: sorgusunu hazırlama/yürütme yerine parametreler olmayan basit sorgular için kullanmak için bir performans avantajı var mı?

+1

@summea Aslında her ikisi de 'PDOStatement' i döndürür, 'PDO :: exec' düsünüyorsunuz, fakat bu burada bir sorun değil. – pmm

+0

İyi nokta; Onları her zaman karıştırırım ... – summea

cevap

8

Evet, çünkü PDO::prepare numaralı telefonu aradığınızda, sunucu bu sorgu için bir sorgu planı ve meta bilgisi oluşturmalıdır, ardından PDO::execute kullandığınızda belirtilen parametreleri bağlamak için ek yük vardır. Bu nedenle, bu ek yükü kaydetmek ve performansı artırmak için, parametreler olmadan sorgular için PDO::query'u kullanabilirsiniz. Ancak, uygulamanızın boyutuna ve boyutuna ve sunucu/ana bilgisayar yapılandırmanıza (paylaşılan/özel) bağlı olarak, herhangi bir performans artışını görebilirsiniz veya hiç görmeyebilirsiniz.

1

PHP'de iki farklı yol arasında bir şey yapmak arasında ölçülebilir bir fark vardır. Her yöntemin sizin için sahip olduğu değeri değerlendirmeli ve bir şeyleri bir şekilde yapabilmeniz için buna değip değmeyeceğini görmek için test senaryoları oluşturmalısınız.