2014-11-03 12 views
7

Ho 3 tabelle:
1. studente: {id, nome, rotolo}
2. soggetti: {id, name}
3. marchi: {student_id, icLsoggetto, marchi}
Quale è meglio: chiamare la procedura all'interno di una procedura o eseguire SQL all'interno di una procedura?

I avere una procedura che restituisce tutti gli studenti e i loro marchi (ad esempio getAllMarks()), voglio creare un'altra procedura che restituisce i segni di un determinato numero di roll (ad esempio getRollMarks (int rollno)). Pertanto, è possibile creare la procedura in due modi:
1. scrivere l'SQL appropriato per ottenere il risultato nella procedura getRollMarks.
2. richiamare getAllMarks in getRollMarks e quindi applicare la clausola where sul risultato restituito da getAllMarks.

Qualcuno può suggerire pro e contro dei due metodi sopra indicati? Ho 2 Pro del metodo 2:
1. Le query SQL non verranno ripetute tra le varie procedure.
2.Se qualcosa cambia in una tabella, la modifica verrà eseguita in un punto/procedura, non in ogni procedura che utilizza tale tabella.

PS: le tabelle sono solo per esempio, in realtà sono tabelle più grandi con molti parametri da interrogare. La domanda può essere semplificata come se dovessimo scrivere query ripetute in diverse procedure o dovremmo utilizzare le procedure esistenti con la clausola richiesta (dove, ordina per, entra ecc.)?

risposta

1

Se non si desidera ripetere la query, è necessario utilizzare una vista. Anche le prestazioni sono più veloci.

+0

prima, non ho mai detto che non voglio, voglio la soluzione che è migliore. secondo, ti ho dato una tabella come esempio ci possono essere 10+ tavoli con 10^6 file di dati e più procedure come sopra due. Quindi la creazione di viste per tutti loro non sarà buona, credo. – thekosmix

+1

ok credo, mi manca capito ma io sono un professionista avere meno ripetizioni a causa di una manutenzione più semplice. Per quanto riguarda le prestazioni, non c'è molta differenza tra la chiamata della stored procedure nidificata o la sua individuazione individuale http://sqlblog.com/blogs/alexander_kuznetsov/archive/2011/07/20/will-wrapping-up-code-in-a-reusable -stored-procedure-hurt-performance.aspx –

+0

grazie per il link, sembra che l'esempio preso nel link non sia abbastanza buono per confrontare le prestazioni dei due, nel mio caso, ci sono più di 2 tavoli con più di lakh filari. Penso che nel secondo caso ci sarà un sovraccarico significativo delle prestazioni. Pensi che le visualizzazioni o la tabella temporanea possano essere di aiuto in qualche modo? – thekosmix

Problemi correlati