accelerazione query db
Moderatore: Staff
Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 2006, 14:52
- Nome Cognome: Matteo Rossini
- Slackware: current
- Kernel: slack-current
- Desktop: ktown-latest
- Distribuzione: 01000000-current
- Località: Roma / Castelli
- Contatta:
accelerazione query db
Salve.
Ho un db mysql composto di 3 tabelle. Una piccola (una 50ina di record), una media (c.a. 30K di record), una immensa (c.a. 5M di record). chiamiamole A,B,C
Le tre tabelle sono legate in cascata così:
campi
A: id: chiave primaria; txt-a: varchar
B: id: chiave primaria; a-id: puntamento ad A.id; txt-b: varchar
C: id: chiave primaria; a-id: puntamento ad A.id; b-id: puntamento a B.id; txt-c: varchar
i campi sono legati con foreign key
io devo cercare un record in C e devo tirare fuori i relativi record di A e B
select A.txt-a, B.txt-b, C.txt-c from C left join B on C.b-id=B.id left join B on B.a-id=A.id where txt-c like '%pippo%'
a seconda dei casi la query può impiegare anche 2 minuti.
In qualche caso, da ricercare ho anche chiavi su txt-a e/o txt-b. Questo significa che potrei limitare la ricerca ad un ristretto numero di record di C, il che potrebbe accellerare di molto la ricerca.
Tuttavia ricerche come
select A.txt-a, B.txt-b, C.txt-c from C left join B on C.b-id=B.id left join B on B.a-id=A.id where txt-a = 'pluto' and txt-c like '%pippo%'
non velocizzano assolutamente la ricerca.
Qualcuno sa come sfruttare quel pluto per ridurre effettivamente il numero di record su cui cercare?
In pratica mi aspetterei cose tipo "tira fuori A.id rispondenti a txt-a='pluto' e cerca 'pippo' solo nei record di C con C.id-a corrispondenti alla ricerca precedente"
Grazie
01
Ho un db mysql composto di 3 tabelle. Una piccola (una 50ina di record), una media (c.a. 30K di record), una immensa (c.a. 5M di record). chiamiamole A,B,C
Le tre tabelle sono legate in cascata così:
campi
A: id: chiave primaria; txt-a: varchar
B: id: chiave primaria; a-id: puntamento ad A.id; txt-b: varchar
C: id: chiave primaria; a-id: puntamento ad A.id; b-id: puntamento a B.id; txt-c: varchar
i campi sono legati con foreign key
io devo cercare un record in C e devo tirare fuori i relativi record di A e B
select A.txt-a, B.txt-b, C.txt-c from C left join B on C.b-id=B.id left join B on B.a-id=A.id where txt-c like '%pippo%'
a seconda dei casi la query può impiegare anche 2 minuti.
In qualche caso, da ricercare ho anche chiavi su txt-a e/o txt-b. Questo significa che potrei limitare la ricerca ad un ristretto numero di record di C, il che potrebbe accellerare di molto la ricerca.
Tuttavia ricerche come
select A.txt-a, B.txt-b, C.txt-c from C left join B on C.b-id=B.id left join B on B.a-id=A.id where txt-a = 'pluto' and txt-c like '%pippo%'
non velocizzano assolutamente la ricerca.
Qualcuno sa come sfruttare quel pluto per ridurre effettivamente il numero di record su cui cercare?
In pratica mi aspetterei cose tipo "tira fuori A.id rispondenti a txt-a='pluto' e cerca 'pippo' solo nei record di C con C.id-a corrispondenti alla ricerca precedente"
Grazie
01
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
- murdock
- Linux 2.x
- Messaggi: 477
- Iscritto il: ven 25 mag 2007, 12:58
- Slackware: 64 14.1
- Kernel: 3.18.3
- Desktop: KDE 4.14.3
- Contatta:
Re: accelerazione query db
Hai messo i campi su cui effettui la query (txt-a, txt-b, txt-c, i vari a-id ed id) come INDEX?
Saluti,
MuRdOcK
Saluti,
MuRdOcK
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 2006, 14:52
- Nome Cognome: Matteo Rossini
- Slackware: current
- Kernel: slack-current
- Desktop: ktown-latest
- Distribuzione: 01000000-current
- Località: Roma / Castelli
- Contatta:
Re: accelerazione query db
si. senza indice arrivo anche a 10 minuti se non più
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
- murdock
- Linux 2.x
- Messaggi: 477
- Iscritto il: ven 25 mag 2007, 12:58
- Slackware: 64 14.1
- Kernel: 3.18.3
- Desktop: KDE 4.14.3
- Contatta:
Re: accelerazione query db
Wow, vediamo se ho capito bene:
SELECT A.id FROM A WHERE A.txt-a="pluto" AND C.id-a=A.id AND C.txt-c LIKE "%pippo%";
Senza le join.
Se ho capito male me ne scuso
Saluti,
MuRdOcK
Io proverei così:...Tira fuori A.id rispondenti a txt-a='pluto' e cerca 'pippo' solo nei record di C con C.id-a
SELECT A.id FROM A WHERE A.txt-a="pluto" AND C.id-a=A.id AND C.txt-c LIKE "%pippo%";
Senza le join.
Se ho capito male me ne scuso
Saluti,
MuRdOcK
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 2006, 14:52
- Nome Cognome: Matteo Rossini
- Slackware: current
- Kernel: slack-current
- Desktop: ktown-latest
- Distribuzione: 01000000-current
- Località: Roma / Castelli
- Contatta:
Re: accelerazione query db
mi sembra che a suo tempo la prova l'avevo fatta:
select A.txt-a, B.txt-b, C.txt-c from A,B,C where C.b-id=B.id and B.a-id=A.id and txt-a = 'pluto' and txt-c like '%pippo%'
ma non velocizzava,
ma è passato un po' di tempo.
Dopo provo, ma mi sa che dovrò rimandare l'analisi a dopo ferragosto (vacanze.... )
ciao.
01
select A.txt-a, B.txt-b, C.txt-c from A,B,C where C.b-id=B.id and B.a-id=A.id and txt-a = 'pluto' and txt-c like '%pippo%'
ma non velocizzava,
ma è passato un po' di tempo.
Dopo provo, ma mi sa che dovrò rimandare l'analisi a dopo ferragosto (vacanze.... )
ciao.
01
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
- murdock
- Linux 2.x
- Messaggi: 477
- Iscritto il: ven 25 mag 2007, 12:58
- Slackware: 64 14.1
- Kernel: 3.18.3
- Desktop: KDE 4.14.3
- Contatta:
Re: accelerazione query db
Beh, allora avremo modo di riparlarne, buone ferie
Saluti,
MuRdOcK
Saluti,
MuRdOcK
- ZeroUno
- Staff
- Messaggi: 5441
- Iscritto il: ven 2 giu 2006, 14:52
- Nome Cognome: Matteo Rossini
- Slackware: current
- Kernel: slack-current
- Desktop: ktown-latest
- Distribuzione: 01000000-current
- Località: Roma / Castelli
- Contatta:
Re: accelerazione query db
Tanto ora sto ristrutturando tutto l'applicativo.
Appena arriverò a quella sezione mi potrò sbizzarrire con gli esperimenti.
Ciao
01
Appena arriverò a quella sezione mi potrò sbizzarrire con gli esperimenti.
Ciao
01
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
- neongen
- Packager
- Messaggi: 827
- Iscritto il: ven 25 mag 2007, 12:37
- Nome Cognome: Enrico
- Slackware: 14.0_64
- Kernel: 3.4.4
- Desktop: KDE 4.5.5
- Distribuzione: Maemo 5
- Contatta:
Re: accelerazione query db
però da quello che scrivi mi sembra superluo C.b-id che punta a B.id