Bazı DB rutinleri yazıyorum ve ben hazırlanmış deyimleri kullanıyorum. Benim çevre PHP5 ile PDO olduğunu.
Ben öncelikle böyle elle SQL kaçış veri girişi zorunda değil gibi bazı yardımcı ikramiye bir performans yararı sağlamak, yanı sıra hazır deyimleri anlamak.
Benim soru performans parçası hakkında.
Bir ürün kimliği alır ve fiyatını döndüren altında ben bir getPrice fonksiyonun iki uygulamaları var.
getPrice_A aynı komut dosyası içinde sonraki çağrıları karşısında aynı PDOStatement nesnesi yeniden kullanır. Bu gerekli ya da önerilir mi? Eğer öyleyse, her modelde) (her get * genelinde bu fazladan kod çoğaltma önlemek için herhangi bir yolu var mı?
getPrice_B her çağrı üzerine yeni bir PDOStatement nesnesi oluşturur. DBMS bu deyimi şimdiden hazırlanmış tanımak ve hala bazı iş atlamak mümkün olacak? Diğer bir deyişle, bu uygulama düzgün hazırlanmış tabloların performans avantajlarından sürer?
Bütün bunları yazılı ve üzerinde okuduktan sonra, ben getPrice_B ince ve getPrice_A veya ekstra komplikasyon değerinde olmayabilir ki, bunun üstüne bir ihmal fayda sağladığı düşünün.
Ama hala daha bilgili birinden kesin duymak istiyorum.
Bu $pdo
, aşağıdaki örneklerde, geçerli ve bağlı PDO amacı varsayalım.
<?php
class Product {
static function &getPrice_A($id) {
static $stmt;
if (!$stmt) {
$stmt = $pdo->prepare('SELECT price FROM products WHERE id = ?');
}
$stmt->execute(array($id));
return $stmt->fetchColumn(0);
}
static function &getPrice_B($id) {
$stmt = $pdo->prepare('SELECT price FROM products WHERE id = ?');
$stmt->execute(array($id));
return $stmt->fetchColumn(0);
}
}
// example usage:
$price = Product::getPrice(4982);
echo "Product 4982 costs $price\n";