Mysql query utili

Queste sono alcune query di mysql che possono essere utili per esaminare il database e le tabelle contenute al suo interno

Le query presenti nell’articolo

Numero di righe

Contiamo il numero di righe presenti in una tabella. Ottengo tutte le righe presenti

SELECT COUNT(*) FROM <table>;
IDVAL
11
22
32
4null
53
64
7null
85
95

Passando a COUNT il nome di una colonna, ottengo come risultato tutte le righe NO-NULL ovvero tutte le righe che hanno un valore all’interno di quella colonna.
Se invece dichiaro un WHERE posso selezionare quante righe hanno lo stesso valore.

SELECT COUNT(val) FROM <table>;
SELECT COUNT(val) FROM <table> WHERE val=2;

controllare le Dimensioni delle tabelle e dei database

Con questa query andiamo ad analizzare il peso di una singola tabella all’interno di un database. Posso elencare le tabelle e posso scegliere il database.

SELECT table_name "Table", ROUND(((data_length + index_length) / 1024 / 1024), 2) "Size (MB)" FROM information_schema.tables WHERE table_schema = "<database>"
AND table_name = "<table>";

Posso visualizzare l’elenco delle tabelle di un database, con il loro singolo peso.

SELECT table_name "Table", ROUND(((data_length + index_length) / 1024 / 1024), 2) "Size (MB)" FROM information_schema.tables WHERE table_schema = "<database>" ORDER BY (data_length + index_length) DESC;

Posso ottenere un risultato simile, ma con dati aggregati per database, quindi il peso del database complessivo con una query simile.

SELECT 
    table_schema "DB Name",
    Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"
 FROM information_schema.tables
 GROUP BY table_schema;

Analizzare una tabella

Analizzare una tabella significa capire quali sono i campi da cui è composta, ed crearne le statistiche per information_schema.

DESCRIBE <table>;
ANALYZE <table>;

Pulire i Bin Log

I bin log sono dei file che vengono creati da MySql di default. Servono per registrare tutte le operazioni effettuate su Mysql e possono tornare utili in caso di replication.
Possono tranquillamente essere cancellati direttamente attraverso Mysql con una query.

PURGE BINARY LOGS BEFORE NOW() - INTERVAL 3 DAY;
PURGE MASTER LOGS BEFORE '2023-06-25 00:00:00';

Con la prima query eliminiamo i file precedenti a 3 giorni, con la seconda eliminiamo tutti i log precedenti alla mezzanotte del 25 giugno 2023

Clear

Pulire lo schermo della console MySql puo tornare utile per riuscire a leggere un risultato in modo pulito.

In questo caso abbiamo sia una query da poter eseguire, anche se piu che query è un comando, oppure possiamo richiamare tutto semplicemente con una combinazione di tasti.

La combinazione di tasti da utilizzare è CTRL+L mentre il comando da lanciare dalla CLI è

system clear;
system cls;