MySQL è il secondo sistema di gestione di database relazionali open source più utilizzato al mondo. È diventato così popolare grazie alle sue prestazioni veloci e costanti, all'elevata affidabilità e alla facilità d'uso. Questo articolo presenta alcune delle migliori pratiche in MySQL.
Best practice in MySQL
1. Usa sempre il tipo di dati corretto
Utilizzare i tipi di dati in base alla natura dei dati. Se utilizzi tipi di dati irrilevanti, potrebbe consumare più spazio o causare errori.
Esempio:l'utilizzo di varchar (20) per memorizzare i valori di data e ora anziché il tipo di dati DATETIME comporterà errori durante i calcoli relativi alla data e c'è anche un possibile caso di memorizzazione di dati non validi.
2. Usa CHAR (1) su VARCHAR(1)
Se stringi un singolo carattere, usa CHAR(1) invece di VARCHAR(1) perché VARCHAR(1) impiegherà byte extra per memorizzare le informazioni
3. Utilizza il tipo di dati CHAR per memorizzare solo dati di lunghezza fissa
Esempio:l'utilizzo di char(1000) invece di varchar(1000) consumerà più spazio se la lunghezza dei dati è inferiore a 1000
4. Evita di utilizzare formati di data regionali
Quando si utilizza il tipo di dati DATETIME o DATE, utilizzare sempre il formato data AAAA-MM-GG o il formato data ISO adatto al proprio motore SQL. Altri formati regionali come GG-MM-AAAA, MM-GG-AAAA non verranno archiviati correttamente.
5. Colonne chiave dell'indice
Assicurati di indicizzare le colonne utilizzate nelle clausole JOIN in modo che la query restituisca rapidamente il risultato.
Se utilizzi l'istruzione UPDATE che coinvolge più di una tabella, assicurati che tutte le colonne utilizzate per unire le tabelle siano indicizzato
6. Non utilizzare funzioni su colonne indicizzate
L'utilizzo di funzioni su colonne indicizzate vanifica lo scopo dell'indice. Supponiamo di voler ottenere dati in cui i primi due caratteri del codice cliente sono AK, non scrivere
SELEZIONA colonne DALLA tabella WHERE sinistra (codice_cliente,2)='AK'
ma riscrivilo utilizzando
SELEZIONA le colonne DALLA tabella DOVE codice_cliente come 'AK%'
che utilizzerà l'indice che si traduce in tempi di risposta più rapidi.
7. Usa SELECT * solo se necessario
Non utilizzare alla cieca SELECT * nel codice. Se nella tabella sono presenti molte colonne, verranno restituite tutte, il che rallenterà il tempo di risposta, in particolare se invii il risultato a un'applicazione front-end.
Digita esplicitamente i nomi delle colonne effettivamente necessari.
8. Usa la clausola ORDER BY solo se necessario
Se vuoi mostrare il risultato nell'applicazione front-end, lascia che ORDINA il set di risultati. Questa operazione in SQL potrebbe rallentare il tempo di risposta nell'ambiente multiutente.
9. Scegli il motore di database appropriato
Se sviluppi un'applicazione che legge i dati più spesso della scrittura (es:motore di ricerca), scegli il motore di archiviazione MyISAM.
Se sviluppi un'applicazione che scrive i dati più spesso della lettura (es:transazioni bancarie in tempo reale), scegli il motore di archiviazione INNODB.
La scelta del motore di archiviazione errato influirà sulle prestazioni
10. Usa la clausola EXISTS dove necessario
Se vuoi verificare l'esistenza dei dati, non utilizzare
If (SELECT count(*) from Table WHERE col='some value')>0
, usa invece la clausola EXISTS
If EXISTS(SELECT * from Table WHERE col='some value')
che è più veloce nel tempo di risposta.