Ottimizzazione delle prestazioni SQL
L'ottimizzazione delle prestazioni SQL è un processo di ottimizzazione delle query SQL per garantire che vengano eseguite il più velocemente possibile. Esistono molti fattori che influenzano le prestazioni delle query SQL, ad esempio il numero di tabelle interrogate, la dimensione e il numero di colonne nelle tabelle e gli indici nelle tabelle.
SQL è un componente fondamentale di molti sistemi di database ed è un linguaggio ben noto per l'interrogazione, l'aggiornamento e la gestione dei dati.
L'ottimizzazione delle prestazioni SQL è un argomento importante da padroneggiare in quanto può aiutare con la scalabilità e la velocità delle query.
In questa sezione tratteremo diversi modi per ottimizzare SQL.
Tutti noi vogliamo sempre una risposta rapida sul processo di recupero dei dati. Quindi dobbiamo progettare un buon database che fornisca le migliori prestazioni durante la manipolazione dei dati, il che si traduce nelle migliori prestazioni di un'applicazione.
Tuttavia, non esiste un modo semplice per definire le migliori prestazioni, ma possiamo scegliere diversi modi per migliorare le prestazioni delle query SQL, che rientrano in varie categorie come la creazione di indici, l'utilizzo di join e la riscrittura di una sottoquery per utilizzare JOIN, ecc.
Come sviluppatore, sappiamo che qualsiasi query SQL può essere scritta in più modi, ma dovremmo seguire le migliori pratiche/tecniche per ottenere migliori prestazioni delle query. Alcuni di essi sono evidenziati di seguito:
- Utilizzare EXISTS invece di IN per verificare l'esistenza dei dati.
2. Evitare * nell'istruzione SELECT. Fornisci il nome delle colonne di cui hai bisogno.
3. Scegliere il tipo di dati appropriato. Ad esempio, per memorizzare le stringhe utilizzare varchar al posto del tipo di dati di testo. Utilizzare il tipo di dati di testo, ogni volta che è necessario memorizzare dati di grandi dimensioni (più di 8000 caratteri).
4. Evitare nchar e nvarchar se possibile poiché entrambi i tipi di dati richiedono solo il doppio della memoria come char e varchar.
5. Evitare NULL nel campo a lunghezza fissa. In caso di requisito NULL, utilizzare un campo a lunghezza variabile (varchar) che occupa meno spazio per NULL.
6. Evitare di avere clausole. La clausola Avere è necessaria se si desidera filtrare ulteriormente il risultato di un'aggregazione.
7. Creare indici cluster e non cluster.
8. Mantieni l'indice cluster piccolo poiché i campi utilizzati nell'indice cluster possono essere utilizzati anche nell'indice non cluster.
9. Le colonne più selettive devono essere posizionate all'estrema sinistra nella chiave di un indice non cluster.
10. Elimina gli indici inutilizzati.
11. Meglio creare indici su colonne che hanno valori interi invece di caratteri. I valori interi utilizzano meno overhead rispetto ai valori dei caratteri.
12. Usa i join invece delle sottoquery.
13. Utilizzare le espressioni WHERE per limitare la dimensione delle tabelle dei risultati create con i join.
14. Utilizzare TABLOCKX durante l'inserimento in una tabella e TABLOCK durante l'unione.
15. Utilizzare WITH (NOLOCK) durante l'interrogazione dei dati da qualsiasi tabella.
16. Utilizzare SET NOCOUNT ON e utilizzare TRY-CATCH per evitare la condizione di deadlock.
17. Evita i cursori poiché i cursori sono molto lenti nelle prestazioni.
18. Utilizzare la variabile Table al posto della tabella temporanea. L'uso delle tabelle temporanee richiedeva l'interazione con il database TempDb, un'attività che richiede tempo.
19. Utilizzare UNION ALL al posto di UNION, se possibile.
20. Utilizzare il nome dello schema prima del nome degli oggetti SQL.
21. Utilizzare la procedura memorizzata per i dati utilizzati di frequente e le query più complesse.
22. Mantieni la transazione il più piccola possibile poiché la transazione blocca i dati delle tabelle di elaborazione e può portare a deadlock.
23. Evitare il prefisso "sp_" con il nome della procedura memorizzata definita dall'utente perché il server SQL cerca prima la procedura definita dall'utente nel database principale e successivamente nel database della sessione corrente.
24. Evitare l'uso di sottoquery scalari non correlate. Utilizzare questa query come query separata anziché come parte della query principale e archiviare l'output in una variabile, a cui è possibile fare riferimento nella query principale o in una parte successiva del batch.
25. Evita le funzioni con valore di tabella multi-istruzione (TVF). I TVF con più dichiarazioni sono più costosi dei TVF in linea.
Come abbiamo visto sopra, in SQL Server, ci sono diversi passaggi che puoi eseguire per migliorare le prestazioni delle tue query e del database nel suo complesso. Ci sono molti passaggi che saranno applicabili anche ad altri RDBMS come ORACLE.
- Utilizza EXPLAIN PLAN o AUTOTRACE per analizzare il piano di esecuzione delle tue query e identificare eventuali problemi con il modo in cui vengono eseguite.
- Utilizzare l'hint INDEX per specificare quale indice deve essere utilizzato dall'ottimizzatore per una determinata query.
- Prendi in considerazione l'utilizzo di suggerimenti come FULL o INDEX_FFS per forzare l'ottimizzatore a utilizzare rispettivamente una scansione completa della tabella o una scansione completa rapida dell'indice.
- Utilizzare l'hint OPTIMIZER_MODE per specificare una particolare modalità di ottimizzazione per una query.
- Prendi in considerazione l'utilizzo di viste materializzate per pre-calcolare e archiviare i dati ad accesso frequente, che possono migliorare le prestazioni delle query che accedono a tali dati.
- Usa il pacchetto DBMS_STATS per analizzare e raccogliere statistiche sul tuo database e sui suoi oggetti, che possono aiutare l'ottimizzatore a prendere decisioni più informate durante la creazione dei piani di esecuzione.
- Prendi in considerazione l'utilizzo del partizionamento per suddividere tabelle di grandi dimensioni in parti più piccole e più gestibili, che possono migliorare le prestazioni delle query che accedono a tali tabelle.
- Utilizza SQL Tuning Advisor per identificare e correggere eventuali problemi di prestazioni con le tue istruzioni SQL.
- Queste sono solo alcune delle numerose tecniche che è possibile utilizzare per migliorare le prestazioni delle query e del database Oracle SQL. È importante tenere presente che i passaggi specifici che dovrai eseguire dipenderanno dal database e dal carico di lavoro specifici.
- È sempre consigliabile consultare un amministratore di database o altri esperti in caso di problemi di prestazioni.
Molti modi per imparare GCP gratuitamente con Google Cloud durante le vacanze
Comprensione _
Comandi Linux per l'apprendimento nel cloud
Buona lettura…..Buon apprendimento!

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































