Quando si recuperano dei record con una query del tipo SELECT * FROM `tbl` WHERE `ID` IN(34,785,345,43) può essere necessario ordinare il risultato della query seguendo l’ordine in cui vengono passati i valori all’istruzione IN(), per fare questo basta usare la seguente istruzione order: ORDER BY FIELD(`ID`, 34, 785, 345, 43), quindi, SELECT * FROM `tbl` WHERE `ID` IN(34,785,345,43) ORDER BY FIELD(`ID`, 34, 785, 345, 43)
Posted in MySql, Tips and tricks | No Comments »
Se vogliamo utilizzare PhpMyAdmin sul nostro Ubuntu bastano pochi semplici passaggi.
Prima di tutto dobbiamo installare il pacchetto, quindi eseguiamo il comando sudo apt-get install phpmyadmin e rispondiamo alle semplici domande che ci vengono rivolte durante l’installazione.
Al termine dell’installazione dobbiamo dire al nostro Apache dove si trova il file di configurazione di PhpMyAdmin che ci permetterà di eseguirlo dal browser, quindi apriamo il file apache2.conf con il nostro editor preferito, ad esempio con sudo nano /etc/apache2/apache2.conf, ed aggiungiamo alla fine del file la seguente riga: Include /etc/phpmyadmin/apache.conf . Ora non ci resta che salvare il file e riavviare il server web con sudo /etc/init.d/apache2 restart.
A questo punto possiamo accedere al programma dall’indirizzo: http://localhost/phpmyadmin
Posted in Linux, MySql, Tips and tricks | No Comments »

Lavorando con MySql può capitare di doverne modificare la configurazione “al volo” ma questa operazione, se fatta direttamente dal file di configurazione my.cnf, comporta il riavvio del servizio e un conseguente down dell’appplicazione.
Per evitare il down è possibile modificare le variabili di MySql direttamente con una query di update sulle medesime, ad esempio se vogliamo modificare la direttiva wait timeout bisogna eseguire la seguente query:
set global wait_timeout = 30
Dopo avere eseguito la query MySql avvertirà la modifica senza essere riavviato, lo stato si puù verificare eseguendo la query SHOW VARIABLES
È bene ricordarsi di apportare la modifica anche nel file my.cnf così ai prossimi riavvii del database le modifiche verranno mantenute.
Posted in Linux, MySql | No Comments »
Come ogni cosa nell’ambito dei database e comunque nella programmazione in generale le cose che da una parte offrono grandi prestazioni dall’altra presentano dei limiti che se non vengono considerati possono causare spiacevoli sorprese e anche di questo avviso sono gli indici Full Text di MySql.
Ho avuto modo di affrontare l’argomento pochi mesi fa e ne ho parlato nel post precedente sbandierandone i privilegi ma oggi voglio elencare le pagine di riferimento ufficiali di mysql.com dove sono descritti anche i limiti di questa tipologia di indici e degli accorgimenti per ottimizzare le prestazioni.
Le pagine di riferimento ufficiali si trovano qui: http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html, ed in particolare i consigli per il tuning sono in questa pagina: http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html
Buona lettura.
Posted in MySql | No Comments »
I database crescono, le richieste aumentano, e le query che fino a poco tempo fa sembravano veloci diventano improvvisamente lentissime… Prima o poi tutti si riconoscono in questa situazione… e se non si corre ai ripari si rischia seriamente di compromettere un intero sistema.
Per quanto mi riguarda ci sono passato parecchie volte in una situazione analoga ma l’ultima volta la questione era un po’ più complicata delle precedenti e analizzando (.?..x~@~#..!.) l’sql ho localizzato i colli di bottiglia della query incriminata e alla fine ho deciso di creare un indice di tipo Full Text per velocizzare il recupero dei dati.
Ragazzi, non avevo mai utilizzato indici Full Text ma sono rimasto impressionato dalla velocità, un query che normalmente impiega dai 3 ai 7 secondi adesso viene eseguita in pochi centesimi di secondo!
Per chi non sapesse cos’è e come si usa un indice Full Text ecco un po’ di appunti:
L’ indice Full Text è un indice speciale in grado di recuperare la posizione di ogni distinto vocabolo in un campo.
In un indice Full Text possono essere indicizzati uno o più campi testuali (varchar, text, ecc…).
Sintassi di creazione dell’indice:
1
| ALTER TABLE NomeTabella ADD FULLTEXT (nome_campo); |
Sintassi di creazione dell’indice con più campi:
1
| ALTER TABLE NomeTabella ADD FULLTEXT (nome_campo,nome_campo2); |
Sintassi di utilizzo:
1
| SELECT * FROM NomeTabella WHERE MATCH (nome_campo) AGAINST ('parola_da_cercare'); |
Sintassi di utilizzo con più campi nell’indice:
1
| SELECT * FROM NomeTabella WHERE MATCH (nome_campo,nome_campo2) AGAINST ('parola_da_cercare'); |
Posted in MySql | No Comments »