Tips di ottimizzazione Mysql
MySql Ottobre 9th, 2007
Ci sono alcune regole banali che bisognerebbe seguire quando si scrivono le query che spesso vengono tralasciate perchè considerate irrilevanti; in realtà ogni accorgimento che si prende si riflette sulle prestazioni del sistema in generale. Di seguito riporto alcune pillole da tenere presente.
parentesi: mentre si scrive un’interrogazione, cercare di utilizzare il minor numero di parentesi possibile…ovvero…utilizzare soltanto quelle strettamente necessarie; il parsing della query è più lungo perchè la presenza di parentesi modifica le priorità delle clausole.
casting delle variabili: scrivere una condizione WHERE in questo modo WHERE id='10' oppure in questo WHERE id=10, (ovviamente considerando id come campo numerico) non è la stessa cosa perchè nel primo caso si costringe Mysql ad operare un casting del valore costante in modo da poter effettuare un confronto tra tipi identici; il secondo caso è preferibile.
attributi in output: nelle SELECT inserire in output soltanto i campi effettivamente necessari; evitare di scrivere SELECT * FROM ... quando ci serve soltanto un attributo.
operatore LIKE: limitare l’operatore LIKE ai casi di effettiva necessità. Cercare di evitare di inserire la wildcard (%) all’inizio della stringa. Ad es. evitare una condizione del tipo WHERE nome LIKE '%mario%'
LIMIT: sfruttare l’operatore LIMIT se è sufficiente ottenere un limitato numero di righe in output.
INSERT: se ci si trova nella situazione di dover eseguire una serie di INSERT, si possono raggruppare tutt in una query unica. Ad esempio le tre interrogazioni:
INSERT INTO utenti (nome,cognome)
VALUES ('Mario','Rossi');
INSERT INTO utenti (nome,cognome)
VALUES ('Giuseppe','Verdi');
INSERT INTO utenti (nome,cognome)
VALUES ('Antonio','Neri');
possono essere integrate nella query:
INSERT INTO utenti (nome,cognome)
VALUES ('Mario','Rossi'),
('Giuseppe','Verdi'),
('Antonio','Neri');
con un notevole guadagno in efficienza.
Tags: MySql, ottimizzazione, query, tips, tuning
About
Leave a Comment