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
7
A
cevap
1
Sorguyu tekrarlamak istemiyorsanız, bir görünüm kullanmalısınız. Ayrıca performans bilge daha hızlıdır.
İlgili konular
- 1. Java, bitshifts kullanırken, neden 1 << 32! = 1 << 31 << 1?
- 2. Git, <<<<<<< HEAD dosyasına
- 3. ValueError: num olmalıdır 1 <= num <2 değil, 3
- 4. nasıl bir ZIP T-SQL JOIN uygulamak?</p> <pre><code>Id Color -- ---- 1 Red 2 Green 3 Blue 4 NULL </code></pre> <p>Ve tablo #bar:
- 5. İçinde Gettext kullanarak PHP <<< EOF dizgisi
- 6. css: 2 veya <code><thead></code> yılında <code><tr></code> daha varsa <tr>
- 7. mySQL complex SELECT sorgusu?</p> <pre><code>users: id | email emails: id | subject | body user_emails: user_id | email_id </code></pre> <p>Çok basit bir tasarım:
- 8. Postgres tarafından dizilerini bulmak ve ben iki tablo</p> <p><strong>tablo</strong><br> id <br> başlık <br> yıl</p> <hr> <p><strong>tablo b</strong><br> id <br> sahip diğer tablodan
- 9. EJS: <% = versus <% -
- 10. bir <code>a</code> (değil gerçek isim) adı verilen etiket ve nitelik <code>id</code> denilen i nasıl da XML
- 11. Toplamda 1 <= i <j <k <= n'de GLPK
- 12. Ben MySQL sorgudan kullanıcıyı <code>id</code> ve <code>Email</code> bulmak istediğiniz mysql sorgusu
- 13. Select2, Select2 <select2-id>
- 14. Ben</p> <pre><code>@Url.Action("GetOptions", "ControllerName", new { id="1"}); </code></pre> <p>Ancak bunun bir dize değeri almak istiyorum bir görünüm içinde bir Html eylemini kullanabilirsiniz <code>ASP.net core</code></p> <p>kullanıyorum
- 15. Escape <%%> jsp içinde
- 16. <: <İş nasıl?
- 17. nasıl ben 3 tablolar alanlarla <br> <strong>emp_ref_table</strong><br> 1.emp_id (pk, ai) <br> 2.emp_name <br> 3.gender sahip aynı kimliğe
- 18. Ben</em></strong> grafiği oluşturmak için <strong><em>AmCharts kullanıyorum</p> <p>, JavaScript sürümü
- 19. nedenleri Üzerinde aşağıdaki özellikleri ayarlayın ettik <code><div></code> içinde bir <code><p></code> etiketine sahip
- 20. CoffeeScript fonksiyonu/varlıklar/javascript ben <code>app/assets/javascript</code> yılında CoffeeScript bir işlev yarattı</p> <pre><code>myFunction = (variable) -> </code></pre> <p>
- 21. Neden For döngüsüne girebilir? o döngü boyunca bunun içinde alabilirsiniz neden <code>i < -1</code><code>-1</code> olduğunu
- 22. bir dizeden bir lamda işlevi oluşturun ** düzgün ** Böyle bir dize</p> <pre><code>"2*(i+j) <= 100" </code></pre> <p>Ben tekabül lambda fonksiyonu oluşturmak istiyorum Verilen
- 23. dönüştürme <IMG> Bu</p> <pre><code><img id='my_img' src='www.someimage.com'> </code></pre> <p>gibi bir görüntü var Javascript
- 24. Ben <code>windows</code> içinde <code>sox</code> yüklediğim
- 25. ben <code>evaluate</code> içinde <code>console.log</code> kullandığınızda, çalışıyor Neden setTimeout
- 26. I ("<strong>Olaylar</strong>" bir "<strong>typeEvents</strong>" Ben bir yere sahip kullanıcı listesini almak istiyorum, ben 3 tablolar "<strong>Kullanıcı</strong>" sahip querybuilder
- 27. CustomKeyboardView içinde <Key> gösterme <Row>?
- 28. X * 2 + 1 hesaplamanın kısa bir yolu var mı? <br> <code>x = x*2;</code><code>x *= 2;</code></p> <p>gibi yazılmış olabilir
- 29. Böyle bir veri tablosu olan id <strong>örnek</strong> başlatılmış olan
- 30. Daha verimli olan MySQL'de: IFNULL veya NULLIF?</p> <pre><code>IFNULL(column_name, 'test') = 'test' </code></pre> <p>veya</p> <pre><code>NULLIF(column_name, 'test') IS NULL </code></pre> <p>Hangisi daha verimlidir:
İ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
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 –
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