2014-11-03 7 views
7

3 tablolar var tüm öğrenciyi ve notlarını döndüren bir prosedüre (getAllMarks() diyelim) sahip olursak, belirli bir roll no (bir getRollMarks (int rollno)) döndüren başka bir prosedür oluşturmak istiyorum. Bu nedenle, prosedürü oluşturabilmem için iki yol vardır:
1. sonucu almak için getRollMarks prosedürüne uygun SQL yazın.
2. getRollMarks uygulamasında getAllMarks öğesini arayın ve ardından getAllMarks tarafından döndürülen sonuçtaki tümceyi uygulayın.

Herhangi biri iki yöntemin üzerinde artıları ve eksileri önerebilir mi? Yöntem 2:
2 Prosesi var 1.SQL sorguları prosedürler arasında tekrarlanmayacak.
2. Bir tabloda herhangi bir şey değişiyorsa, değişiklik, o tabloyu kullanan her yordamda değil, tek bir yerde/yordamda gerçekleştirilecektir.

Not: Tablolar yalnızca örnek olarak aslında sorgulanacak birçok parametreli büyük tablolardır. Soru, farklı prosedürlerde tekrarlanan sorgular yazmamız gerektiğinde olarak basitleştirilebilir veya mevcut prosedürleri gerekli tümcelerle kullanmalı mıyız (nerede, sipariş, birleşme vb.)?Hangisi daha iyi: Bir prosedürün içinde prosedürü çağırmak veya bir prosedür içinde sql yürütmek? <BR> 1. Öğrenci: {id, ad, rulo} <BR> 2. konu: {id, isim} <BR> 3. işaretleri: {student_id, subject_id, işaretler} <BR></p> <p>ben

cevap

1

Sorguyu tekrarlamak istemiyorsanız, bir görünüm kullanmalısınız. Ayrıca performans bilge daha hızlıdır.

+0

İlk önce istemediğimi söylemedim, daha iyi olan çözümü istiyorum. ikincisi, size bir tablo verdim, 10^6 satırlık veri ve ikiden fazlası gibi çoklu prosedürler ile 10+ tablo olabilir. Bu yüzden hepsinin görüşlerini oluşturmak iyi olmaz. – thekosmix

+1

tamam sanırım, anladım ama daha kolay bakım nedeniyle daha az tekrarlama olması bir profesyonel. Performans bilgisi ayrıca iç içe geçmiş saklı yordamı çağırmak veya tek tek çağırmak arasında çok fazla fark yoktur. Http://sqlblog.com/blogs/alexander_kuznetsov/archive/2011/07/20/will-wrapping-up-code-in-a-reusable -stored-yordam-incit-performance.aspx –

+0

bağlantı için teşekkürler, bağlantıda alınan örnek iki performansını karşılaştırmak için yeterince iyi değil, benim durumumda, lakh fazla 2 tablodan fazla var satırlar. İkinci durumda önemli bir performans artışı olacağını düşünüyorum. Görüşlerin veya geçici masaların herhangi bir şekilde yardımcı olabileceğini düşünüyor musunuz? – thekosmix

İlgili konular