Adlandırılmış parametreleri, önbelleğe alma ve PDO

4 Cevap php

Ben böyle bir parametreli SQL deyimi varsa:

SELECT * FROM table WHERE my_field = :field_value

PDO aynı SQL deyimi olarak (aşağıya bakınız) tanımak ve bunun yerine tamamen farklı bir SQL deyimi var varsayarak önbelleği kullanacağını biliyor mu:

SELECT * FROM table WHERE my_field = :new_field_value

Yani, soru sanırım: Bir parametreli select deyimi parametre değişiklikleri ama başka bir şey değişikliklerin adını, ben hala önbelleğe performans parası alacak olursa? Yoksa parametre adı aynı kalır emin olmak için var?

4 Cevap

Eğer PDO_MYSQL kullanıyorsanız sunucu bile onları görür önce {[(0)] false} ayarlanmadığı sürece, o, kendi ham SQL içine hazırlanmış deyimleri yeniden yazar.

Önbelleğe alma yapılır beri sorgu parametreleri değerlerle değiştirilir sonra aynı ifadesi olarak kabul edilmelidir

PDO hiçbir önbelleği vardır - MySql yapar. Ve evet, Sorgu önbelleği içindeki "son" sorgu önbelleğe alır. Aynı hazırlanan beyanlara birden çok kez kullanmak kullanıyorsanız MySQL bu deyimi için sorgu yürütme planı önbelleğe çünkü Sadece bu değil, ama, sen, ek bir hız artışı kazanacaktır.

Ben PDO adlandırılmış parametreleri işler nasıl emin değilim ama o kullanıyorsa MySQL bunu sorgu önbelleği kullanmak istiyorsanız o zaman MySQL 5.1.17 veya daha sonra kullanmak gerekecektir ifadeleri hazırlanmıştır.

MySQL Query Cache

MySQL 5.1.17 öncesinde, hazırlanan tablolar sorgu önbelleği kullanmayın. 5.1.17 ile başlayarak, hazırlanan tablolar hazırlama yöntemine bağlı olarak farklılık gösteren, belirli koşullar altında sorgu önbelleği kullanın: