Inline Sorgu PHP kullanmak procedure vs

2 Cevap php

Şimdi birçok kişi gibi saklanan prosedürleri iyi bir uygulama olacağını söyledi ... benim uygulama benim modeli içinde inline sorgu ifadeleri kullanarak edilmiştir ... Ben şu soru var

  • PHP Codeigniter MySQL saklı yordamlar nasıl kullanılır?

  • Mysql saklı yordamları kullanmanın avantajları nelerdir?

2 Cevap

Saklı yordamlar sadece başka bir şey (tetikleyiciler, görünümler, vb) gibi bir araç ve aracı uygun yere kullanılmalıdır. Var her satır SQL deyimini alarak ve bir saklı yordam dönüştürerek doğru yönde değil.

Saklı yordamlar çok kaba mantığını kullanarak ve mantığını işlemek için PHP'nin yeteneği kullanıldığı zaman bir engel olacak veri setleri döngü imleçler kullanılarak yazılır.

Ben kullanılan SP üzerinde çalışmış ancak proje yüzlerce kayıtlarının binlerce kodundan çok az doğrudan girişi ile sık güncellenen gerekiyordu büyük bir muhasebe sistemi oldu. Biz temelde sadece zaman başlamak ve (bunu yapmak mümkün olsa) SP değerleri geçirmek için ihtiyaç yoktu bunu söyledim. Bu, ancak, sadece bir ya da sistemde kullanılan inline sorguları binlerce dışında iki oldu. Ben bu bunları kullanmak için tek yerdir demiyorum, ama bazı çok büyük sistemleri kurduk ve henüz başka bir yerde bunları kullanmak için 'İHTİYAÇ' olmadı.

Bence bu inline yüksek hızlı, düşük-sürükle sorguları yazmak ve indeksleri doğru kurdunuz doğrulamak için EXPLAIN kullanmayı öğrenerek vakit geçirmek için daha iyi olurdu. Ben procedure için çok özel bir gerek olmadıkça her gün kullanım için onları çok düşmanca bulmak olacağını düşünüyorum.

Ben saklı procs mutlaka her şeyin cevabı vardır demiyorum. Ancak, imleçler kullanımı gerekli değildir. Ben göstericiler bir engel (yavaş) olduğunu kabul ve kesinlikle gerektiğinde bu nedenle sadece kullanılmalıdır. Benim durumumda, imleçler yalnızca gerektiği gibi normal sorguları veri ayıklamak olamaz genellikle çünkü, kötü tasarlanmış (normalize değil) veritabanları üzerinde kullanılmıştır.

Benim arka plan ben saklı procs veritabanını sorgulamak için mutlak en iyi yoldur söyleyebilirim. NET, ile. Ben ASP.NET onları kolaylaştırmak için tasarlanmış çünkü kısmen düşünüyorum. Bu veri ve kod arasında büyük ayrılmasını sağlar - Bunu test, sonra ihtiyacınız veri döndürmek için bir saklı yordam yazmak. Şimdi ben şimdi php içine alıyorum, ben bunun için en iyi uygulamayı tavsiye edemez. Muhtemelen proje (ölçek, karmaşıklık, vb) özelliklerine bağlıdır.

Ama nedeniyle yanlış saklanan procs indirim yok. Saklanan kaçırmamasını mutlaka yavaş, pahalı imleçler kullanarak kendinizi bağlama anlamına gelmez. Çıkış parametreleri ayarı hariç, onlar aslında herhangi bir SQL sorgusu kullandığı tüm aynı ifadeleri ve mantığı kullanmak. Öğrenmesi gereken hiçbir özel "kaba" mantığı var.