Eğer php5 ve MySQL5 kullanıyorsanız, hazırlanan tablolar üzerinde depolanan procs kullanarak önemli bir avantajı var? (I MySQL5 saklı proc önemli performans kazançları alamayabilirsiniz yerde okumak)
Onlar gerçekten aynı şey değildir - saklanan prosedürleri ile, veritabanı mantığı veritabanı içinde bulunur. Birden çok kez olarak adlandırılan hazırlanan tablolar temelde yeniden ayrıştırma sorguları önlemek - performans yararı büyük ölçüde değişebilir.
Birini veya başka kullanmak için seçim sizin özel durumunuza gerçekten bağlıdır. Ben bir yerde benim mantık bütün olması gibi ben gerçekten artık saklı procs kullanmayın.
Saklı prosedürleri profesyonel sınıf (IE kurumsal sınıf) uygulamaları için mantıklı nereye:
Başka nedenleri vardır.
Hazırlanan tablolar bir oturumunda yaptığı iş için daha iyidir. Bir hazır deyimi oluşturmak için zaman ayırdığınız Ama eğer, aslında bir saklı yordam oluşturmak için gerekli her şeyi yaptık. Fark saklı yordam (veritabanındaki HİBE tabi) çoklu oturum kullanılabilir olmasıdır.
Ne ben çözemiyorum saklı proc vs hazırlanmış deyimi için bir seçenek varsa, neden hazırlanmış tablolar ile rahatsız olduğunu ifade etti. PS tartışmalar vs SP çoğu farklılıkları, diğer vs birini kullanmak için neden aralarında değil, ne odaklanmak gibi görünüyor. Bu her zaman aşağı kaynatın görünür "yapmaya çalışıyorsun ne bağlıdır." Ama bir iyi organize açıklama görmedim: Eğer gerekiyorsa VS bir deyimi kullanmak gerekiyorsa bir proc kullanın ....
Saklanan prosedürleri bazı avantajları:
Saklanan prosedürleri bazı dezavantajları:
Duruma göre artıları ve eksileri vardır, çünkü ben bir tek genelleştirilmiş cevabı bu soru için varolduğunu sanmıyorum. Basitlik, KURU, test ve erken optimizasyon kaçınma gibi prensipleri takip ederseniz, size para cezası sona olasıdır.
Durumda ya da burada söz etmek faydalı olabilir, ancak saklı prosedürler aynı zamanda dil agnostik konum durumda "taşınabilir" değil olabilir. Eğer PHP ile olduğu gibi Java, diyelim ki, içinde kendi veritabanında aynı saklı yordamlar çağırabilir. Prosedürler veritabanında bulunması nedeniyle, veritabanına erişimi olan herhangi bir şey, onlara aynı şekilde sorgulayabilirsiniz.
Ben saklanan prosedürleri fikrini sevmiyorum söyleyerek başlayacak, ben oldukça hazırlanan tablolar yol gitmek '. Bu durumda ben tam doldurmak için orada ikisi farklı fonksiyonlar ... Ayrıca portakal ile elma karşılaştırarak düşünüyorum ....
Uygulaması sadece o db bazı mantık olması mantıklı geliyor sürülen 95% veritabanı ise sadece saklı yordamı dikkate alacaktır.
Saklanan prosedürleri önemli avantajı, mantık ona uygulanabilir önce veri (bu durumda PHP / MySQL tabakası olurdu) bir tabaka çapraz olmamasıdır. Bazı sorgular yavaş MySQL içinde daha PHP aracılığıyla yapılır birkaç seçmek ifadeleri, gerektirebilir.
tobyhede işaret ettiği gibi, şimdi, tek bir yerde tüm mantığı olması iyidir. Ama PHP kullanarak gerekli verileri sorgulamak için sadece gerçekçi oldu projelerde çalıştım; Bir saklı yordam aracılığıyla yapılması gerekiyordu.