MySQLPerformanceBlog.com ilgili bir makalede bazı kriterleri yaptım "Prepared Statements." Peter Zaitsev yazdı:
I’ve done a simple benchmark (using
SysBench) to see performance of simple
query (single row point select) using
standard statement, prepared statement
and have it served from query cache.
Prepared statements give 2290
queries/sec which is significantly
better than 2000 with standard
statements but it is still well below
4470 queries/sec when results are
served from query cache.
Hazırlanan bu ifadeleri kullanarak "havai" onlar en azından bu basit testte düz bir sorgu yürütme, kullanarak daha 14.5% faster olmasıdır olduğunu söylemek gibi görünüyor. Göreli fark muhtemelen daha karmaşık bir sorgu veya daha büyük bir sonuç kümesi ile azalır.
Bu sunucuya çift gidiş-dönüş ve diğer faktörler göz önüne alındığında, karşı-sezgisel hazırlanmış sorgular daha hızlı olacak gibi görünüyor. Peter benchmark detaydan yoksun. Neyse sorgu türü çalıştırmak, çünkü, kendi sınamaları çalıştırmak gerekir, ve çevre ve donanım, kesinlikle önemli faktörlerdir.
Sorgu Cache gelince, bu ifadeleri önbelleğe sorgu sonuçları ile uyumsuz hazırlanan geçmişte doğruydu, ama bu değişti. Bkz: "How the Query Cache Operates" MySQL belgelerinde:
Before MySQL 5.1.17, prepared
statements do not use the query cache.
Beginning with 5.1.17, prepared
statements use the query cache under
certain conditions, which differ
depending on the preparation method: ...
Belgeler, bu koşulları açıklamak için devam ediyor. Okumak gidin.
I SELECT
sorguları için hazırlanmış deyimleri kullanmanızı öneririz. Eğer sürekli bunu yaparsanız, SQL ifadeleri içine sokmak gibi değişkenleri alıntı etkili olabilir. Ama bu bile alıntı örneğin, bazı ince güvenlik açıkları olabilir multi-byte karakter setleri ile (MySQL hata # bakın 8378). Bu durumlarda, güvenli bir şekilde hazırlanmış sorguları kullanmak daha kolaydır.