Prestazioni di stored procedure

3

Sto lavorando per aggiornare un'applicazione scritta da un ex sviluppatore al mio lavoro e ho convertito tutte le query SQL nel codice in stored procedure. Lo sto facendo con l'idea che possa essere facilmente chiamato ogni volta che è necessario invece di avere la stringa di query SQL ripetuta più volte nel codice. Inoltre, posso facilmente utilizzare i parametri con la stored procedure ed evitare le vulnerabilità di SQL injection nel mio codice.

Stavo parlando con un altro sviluppatore del mio team che mi ha chiesto perché l'ho fatto in quel modo e mi ha detto che " chiamare le stored procedure molto può avere un impatto sulle prestazioni di SQL Server e che è meglio utilizzare le prestazioni per usare la stringa SQL nel codice dell'applicazione. "(Si noti che questo è un piccolo team di sviluppo di WinForm VB.NET che non usa MVVM o altri modelli di progettazione simili)

È una dichiarazione accurata? Non ho trovato nulla nel mio googling prima di pubblicare questa domanda che indica che l'esecuzione di stored procedure ha un impatto maggiore sulle prestazioni rispetto a una normale query SQL.

    
posta Lews Therin 02.11.2015 - 18:09
fonte

2 risposte

1

Tornare indietro quando, il driver ODBC era un collo di bottiglia, perché era molto accurato sulla verifica dei caratteri di tutti gli argomenti. Se hai invocato una stored procedure con più di un paio di parametri, sarebbe notevolmente più lento dell'invio di una stringa con tutti i parametri incorporati. Detto questo, mi auguro che i driver disponibili oggi funzionino meglio, quindi dovresti vedere un vantaggio nell'utilizzare stored procedure se le tue operazioni sono più di una dozzina di righe di SQL. Indipendentemente da ciò, non dovresti assolutamente vedere un successo in termini di prestazioni.

    
risposta data 02.11.2015 - 18:41
fonte
1

Non ne ho sentito parlare come problema.

Tuttavia, le procedure memorizzate possono essere un po 'più mal di testa quando si tratta di apportare modifiche, o di avere cambiamenti ovvi, e nessuno dei motivi deve portare all'utilizzo di stored procedure.

È possibile creare metodi con le stringhe SQL e chiamarli ovunque richiesto nel codice per rimuovere la duplicazione delle query. Inoltre non c'è nulla che ti impedisca di usare i parametri su SQL contenuto nelle stringhe del codice.

Ad esempio.

var sql = "SELECT empSalary from employee where salary = @salary";
var connection = new SqlConnection(/* connection info */);
var command = new SqlCommand(sql, connection);

command.Parameters.AddWithValue("salary", txtSalary.Text);
    
risposta data 02.11.2015 - 18:16
fonte

Leggi altre domande sui tag