|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 411
|
[MySql] Dubbio sulle performance delle query
Ciao a tutti,
può sembrare una domanda banale ma quando faccio un query su una tabella con moltissimi record mi capita di vedere, alla fine della tabella, che estrae i risultati in tempi del tipo 0.83 sec quando magari ci ha messo circa 5 minuti o giù di lì. Premetto che sto usando un indice sulla query e quindi dovrebbe essere più veloce (e sottolineo dovrebbe), ma quel numero 0.83 a cosa si riferisce esattamente??
__________________
MOTHERBOARD Asus P5Q-Pro - CPU intel Core 2 Quad Q9550 2.8 Ghz 12 MB Cache - VGA Sapphire Radeon HD4870 512 MB - HD Seagate Barracuda 7200 500GB 32 MB - RAM 4 GB ocz platinum DDR2 pc6400 800 Mhz @5-4-4 - ALIM Enermax 620W - CASE Enermax Chakra - OS Windows 7 Professional 64bit Ultima modifica di Helldron : 15-12-2010 alle 14:31. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 182
|
Premesso che 5 minuti mi sembrano un pò troppi, in alcuni casi succede che se la query estrae un numero di record molto grande capita che effettivamente l'operazione venga eseguita nel tempo specificato, ma per stampare i risultati invece ci metta un bel pò per motivi di bufferizzazione. Anche se ti ripeto 5 minuti per stampare un risultato mi sembrano eccessivi, quanti record ottieni in output?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Servirebbe almeno vedere la query.
Ho il non vago sospetto che si faccia uso di una subselect (con IN), dove MySQL mostra il "meglio" di sé: tante volte non riesce a ottimizzarla, e genera... table scan a ogni iterazione...
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 411
|
ho 100.000 record in una tabella, uso explain e mi dice che usa gli indici, se non lo fa lo forzo io, giusto per vedere che succede.
Per la query niente di complicato ho qualcosa del tipo Codice:
select sql_no_cache matricola, nome, cognome,
stipendio
from Personale
where stipendio between 800 and 1000
order by stipendio desc;
Cmq la mia base di dati non sembra beneficiare molto degli indici (senza i riusltati sono abbastanza soddisfacenti), farò altre prove!!
__________________
MOTHERBOARD Asus P5Q-Pro - CPU intel Core 2 Quad Q9550 2.8 Ghz 12 MB Cache - VGA Sapphire Radeon HD4870 512 MB - HD Seagate Barracuda 7200 500GB 32 MB - RAM 4 GB ocz platinum DDR2 pc6400 800 Mhz @5-4-4 - ALIM Enermax 620W - CASE Enermax Chakra - OS Windows 7 Professional 64bit |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Senza dubbio il collo di bottiglia sia rappresentato dalla visualizzazione.
Quanto agli indici, vanno messi se il campo interessato discrimina il più possibile i dati. Per essere chiari, se i valori distinti sono pochi, allora non ne vale la pena e rappresenta, anzi, un costo più (inserimento, modifica e cancellazione; nelle select anche, dal momento che deve prima cercare nell'indice, e poi comunque caricare parecchie pagine coi record).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:47.



















