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: , , , ,



Leave a Comment

Chiudi
Invia e-mail