Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
Il nuovo gimbal mobile DJI evolve il concetto di tracciamento automatico con tre modalità diverse, un modulo multifunzionale con illuminazione integrata e controlli gestuali avanzati. Nel gimbal è anche presente un'asta telescopica da 215 mm con treppiede integrato, per un prodotto completo per content creator di ogni livello
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Abbiamo provato il nuovo HUAWEI Pura 80 Pro. Parliamo di uno smartphone che è un vero capolavoro di fotografia mobile, grazie ad un comparto completo in tutto e per tutto, In questa colorazione ci è piaciuto molto, ma i limiti hardware e software, seppur in netto miglioramento, ci sono ancora. Ma HUAWEI ha fatto davvero passi da gigante per questa nuova serie Pura 80. Buona anche l'autonomia e soprattutto la ricarica rapida sia cablata che wireless, velocissima.
Opera Neon: il browser AI agentico di nuova generazione
Opera Neon: il browser AI agentico di nuova generazione
Abbiamo provato il nuovo web browser con intelligenza artificiale della serie Opera accessibile tramite abbonamento. Ecco le nostre prime impressioni sulle funzionalità di Opera Neon basate su AI e come funzionano
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-10-2009, 20:45   #1
doctorAle85
Bannato
 
Iscritto dal: Oct 2007
Messaggi: 452
[SQL] Esecuzione di query con viste troppo inefficiente... mi potete aiutare?

Prima ho aperto un post sulla copia di un DB da Postgre a Mysql perchè pensavo che MySQL fosse più veloce nell'eseguire query con viste...invece nn è assolutamente vero!
Il mio problema è questo...
Devo rispondere a delle query in 2 modi...
Nel primo modo utilizzo solo simboli di tabelle presenti nel DB, mentre nel 2° caso utilizzo solo viste.
Nel primo caso sebbene la query sql sia molto più lunga ci mette 200ms con Postgre, mentre per eseguire la query con le viste ci mette 3 sec.
Come cavolo è possibile? A me sembra una cosa assurda...
Non è che bisogna settare qualcosa in particolare?
Cioè, nn capisco come possa eserci questa differenza...
...nn vi sembra strano?

Vi copio le 2 query...

----------Query con simboli di tabelle del DB-----------

SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_2.term2 FROM EA alias_0 , IH alias_1 , T alias_2 , VP alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term1 AND alias_1.term2='c' AND alias_1.term1=alias_2.term1 AND alias_2.term1=alias_3.term AND alias_3.term=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_2.term2 FROM EA alias_0 , IH alias_1 , TEL alias_2 , ISA alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term1 AND alias_1.term2='c' AND alias_1.term1=alias_2.term1 AND alias_2.term1=alias_3.term2 AND alias_3.term2=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_2.term2 FROM EA alias_0 , WF alias_1 , TEL alias_2 , CH alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term1 AND alias_1.term2='c' AND alias_1.term1=alias_2.term1 AND alias_2.term1=alias_3.term AND alias_3.term=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_2.term2 FROM EA alias_0 , WF alias_1 , TEL alias_2 , AP alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term1 AND alias_1.term2='c' AND alias_1.term1=alias_2.term1 AND alias_2.term1=alias_3.term AND alias_3.term=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_2.term2 FROM EA alias_0 , IH alias_1 , TEL alias_2 , AP alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term1 AND alias_1.term2='c' AND alias_1.term1=alias_2.term1 AND alias_2.term1=alias_3.term AND alias_3.term=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_1.term2, alias_3.term2 FROM P alias_0 , EA alias_1 , IH alias_2 , TEL alias_3 , NM alias_4 WHERE alias_0.term=alias_1.term1 AND alias_1.term1=alias_2.term1 AND alias_2.term2='c' AND alias_2.term1=alias_3.term1 AND alias_3.term1=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_3.term2 FROM EA alias_0 , TN alias_1 , IH alias_2 , TEL alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term1 AND alias_1.term1=alias_2.term1 AND alias_2.term2='c' AND alias_2.term1=alias_3.term1 AND alias_3.term1=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_2.term2 FROM EA alias_0 , IH alias_1 , TEL alias_2 , CH alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term1 AND alias_1.term2='c' AND alias_1.term1=alias_2.term1 AND alias_2.term1=alias_3.term AND alias_3.term=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_3.term2 FROM EA alias_0 , FP alias_1 , WF alias_2 , TEL alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term AND alias_1.term=alias_2.term1 AND alias_2.term2='c' AND alias_2.term1=alias_3.term1 AND alias_3.term1=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_2.term2 FROM EA alias_0 , WF alias_1 , TEL alias_2 , VP alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term1 AND alias_1.term2='c' AND alias_1.term1=alias_2.term1 AND alias_2.term1=alias_3.term AND alias_3.term=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_1.term2, alias_3.term2 FROM AP alias_0 , EA alias_1 , IH alias_2 , TEL alias_3 , NM alias_4 WHERE alias_0.term=alias_1.term1 AND alias_1.term1=alias_2.term1 AND alias_2.term2='c' AND alias_2.term1=alias_3.term1 AND alias_3.term1=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_2.term2 FROM EA alias_0 , WF alias_1 , TEL alias_2 , Dean alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term1 AND alias_1.term2='c' AND alias_1.term1=alias_2.term1 AND alias_2.term1=alias_3.term AND alias_3.term=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_2.term2 FROM EA alias_0 , IH alias_1 , TEL alias_2 , Dean alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term1 AND alias_1.term2='c' AND alias_1.term1=alias_2.term1 AND alias_2.term1=alias_3.term AND alias_3.term=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_1.term2, alias_3.term2 FROM P alias_0 , EA alias_1 , WF alias_2 , TEL alias_3 , NM alias_4 WHERE alias_0.term=alias_1.term1 AND alias_1.term1=alias_2.term1 AND alias_2.term2='c' AND alias_2.term1=alias_3.term1 AND alias_3.term1=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_3.term2 FROM EA alias_0 , TN alias_1 , WF alias_2 , TEL alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term1 AND alias_1.term1=alias_2.term1 AND alias_2.term2='c' AND alias_2.term1=alias_3.term1 AND alias_3.term1=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_1.term2, alias_3.term2 FROM AP alias_0 , EA alias_1 , WF alias_2 , TEL alias_3 , NM alias_4 WHERE alias_0.term=alias_1.term1 AND alias_1.term1=alias_2.term1 AND alias_2.term2='c' AND alias_2.term1=alias_3.term1 AND alias_3.term1=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_2.term2 FROM EA alias_0 , WF alias_1 , TEL alias_2 , ISA alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term1 AND alias_1.term2='c' AND alias_1.term1=alias_2.term1 AND alias_2.term1=alias_3.term2 AND alias_3.term2=alias_4.term1
UNION
SELECT DISTINCT alias_4.term1, alias_4.term2, alias_0.term2, alias_3.term2 FROM EA alias_0 , FP alias_1 , IH alias_2 , TEL alias_3 , NM alias_4 WHERE alias_0.term1=alias_1.term AND alias_1.term=alias_2.term1 AND alias_2.term2='c' AND alias_2.term1=alias_3.term1 AND alias_3.term1=alias_4.term1


----------Query con simboli di vista-----------

SELECT DISTINCT VP.term AS term1,VNM.term2 AS term2,VEA.term2 AS term3,VTEL.term2 AS term4
FROM VP,VEA,VWF,VTEL,VNM
WHERE VP.term=VEA.term1 AND VWF.term1=VP.term AND VTEL.term1=VP.term AND VNM.term1=VP.term AND VWF.term2='c'
doctorAle85 è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2009, 22:15   #2
doctorAle85
Bannato
 
Iscritto dal: Oct 2007
Messaggi: 452


...può servire a qualcosa l'indicizzazione delle viste?
sto leggendo qualcosa online, ma nn ci sto capendo molto!!!!
doctorAle85 è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2009, 23:16   #3
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da doctorAle85 Guarda i messaggi
Prima ho aperto un post sulla copia di un DB da Postgre a Mysql perchè pensavo che MySQL fosse più veloce nell'eseguire query con viste...invece nn è assolutamente vero!
Gia', e' peggiore di tanti altri, quasi di tutti gli altri (a parte Access), costa di piu' e non e' standard.

Quote:
Nel primo caso sebbene la query sql sia molto più lunga ci mette 200ms con Postgre, mentre per eseguire la query con le viste ci mette 3 sec.
Come cavolo è possibile? A me sembra una cosa assurda...
Una query diretta o una query su viste anaolghe ci impiega lo stesso tempo.
Un vista non e' altro che uno shortcut il cui statement viene sostituito in fase di esecuzione. Se le cose sono state fatte bene ci si ritrova ad avere una query quindi analoga all'originale senza viste, che ci mettera' lo stesso tempo.
Nel tuo caso, addiriuttura peggiorata, implica che le due esecuzioni non sono identiche, ed e' probabile che tu abbia fatto errori nella costruzione delle viste.

La strada per velocizzare non e' quindi quella delle viste normali, che una volta potevano essere usate per risparmiare il tempo di parsing (Allora prezioso), oggi e' invece ininfluente da quel punto di vista.

Dato che mi sembra di vedere ci siano dei pattern ricorrenti nella tua query, potresti p.es. spiegare come sono fatte le tabelle di partenza e cosa vorresti ottenere. Magari si riesce a trovare un modo piu' efficiente.
E poi, ma solo poi, quando si e' sicuri che non c'e' modo di migliorare, si puo' pensare ad ottimizzare.
Anche per i DB, l'ottimizzazione prematura e' il peggiore di tutti i mali.
(Corollario alla regola dell'ottimizzazione della filosofia Unix)
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2009, 23:28   #4
doctorAle85
Bannato
 
Iscritto dal: Oct 2007
Messaggi: 452
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Nel tuo caso, addiriuttura peggiorata, implica che le due esecuzioni non sono identiche, ed e' probabile che tu abbia fatto errori nella costruzione delle viste.
Grazie della risposta...

Allora...ti posso assicurare che le viste sono create in modo assolutamente corretto!
...tant'è che le 2 query rispondono nello stesso identico modo!

Ti dico che il DB l'ho caricato da un file di backup che mi è stato fornito...e a partire da quelle tabelle ho creato queste viste.

Mi sono appena accorto che nelle tabelle del DB sono definiti degli indici...
ad es
CREATE INDEX EA_index1
ON EA
USING btree
(term1);

...e io penso che sia questo il motivo della grande differenza nel tempo d'esecuzione, dato che ogni tabella contiene da qualche migliaia a centinaia di migliaia di tuple!
...le viste invece non sono indicizzate!!!...e non riesco a trovare il modo per indicizzarle con Postgre!

Come posso fare?
doctorAle85 è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2009, 23:34   #5
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Come ti ho detto prima, una vista non e' nient'altro che una stringa
"SELECT ..... FROM ... WHERE ..... etc." che viene presa e sostiuita in fase di compilazione.
Quindi poiche' viene alla fine eseguito di nuovo lo statement originale senza viste (se le cose sono state fatte correttamente), che fara' uso degli indici, se presenti.

Le viste non vengono usate per velocizzare l'esecuzione, ma per ottimizzare la scrittura del codice, per questioni di sicurezza, per minimizzare gli errori, etc.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2009, 23:50   #6
doctorAle85
Bannato
 
Iscritto dal: Oct 2007
Messaggi: 452
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Come ti ho detto prima, una vista non e' nient'altro che una stringa
"SELECT ..... FROM ... WHERE ..... etc." che viene presa e sostiuita in fase di compilazione.
Quindi poiche' viene alla fine eseguito di nuovo lo statement originale senza viste (se le cose sono state fatte correttamente), che fara' uso degli indici, se presenti.

Le viste non vengono usate per velocizzare l'esecuzione, ma per ottimizzare la scrittura del codice, per questioni di sicurezza, per minimizzare gli errori, etc.
Il fatto è che se per esempio faccio

select * from EA e select * from VEA , una con nomi di tabelle e una di viste, non da assolutamente problema...impiegano all'incirca lo stesso tempo!
se vado a faro query con join è un casino...

Una cosa... se da come dici, le query con le viste alla fine fanno uso degli indici esistenti, perchè online si trovano varie risorse per l'indicizzazione delle viste?
doctorAle85 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2009, 00:10   #7
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da doctorAle85 Guarda i messaggi
Il fatto è che se per esempio faccio

select * from EA e select * from VEA , una con nomi di tabelle e una di viste, non da assolutamente problema...impiegano all'incirca lo stesso tempo!
se vado a faro query con join è un casino...

Una cosa... se da come dici, le query con le viste alla fine fanno uso degli indici esistenti, perchè online si trovano varie risorse per l'indicizzazione delle viste?
Perche' ci sono determinati tipi di viste specifiche di alcuni database che in realta' sono materializzazioni fisiche dei dati delle viste.
Ma questi tipi di strumenti devono superare parecchi problemi, il principale e' il rinfresco dei dati della vista al cambiare dei dati sottostanti delle tabelle.

A vedere come sono scritte le tue query scommetto che potresti migliorare tantissimo l'esecuzione, senza conivolgere nient'altro che il puro SQL.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2009, 00:16   #8
doctorAle85
Bannato
 
Iscritto dal: Oct 2007
Messaggi: 452
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Perche' ci sono determinati tipi di viste specifiche di alcuni database che in realta' sono materializzazioni fisiche dei dati delle viste.
Ma questi tipi di strumenti devono superare parecchi problemi, il principale e' il rinfresco dei dati della vista al cambiare dei dati sottostanti delle tabelle.

A vedere come sono scritte le tue query scommetto che potresti migliorare tantissimo l'esecuzione, senza conivolgere nient'altro che il puro SQL.
La prima query più lunga non la posso modificare!
Io ho creato solo la 2a...quella con le viste!...e il tempo di esecuzione dovrei riuscire a farlo avvicinare a quello della 1a...

Mi potresti dare qualche consiglio per favore?...a parte il problema della creazione delle viste, che ripeto, è correttirrimo!

ps Il DB non subisce modifiche...quindi nn c'è il problema dell'aggiornamento dei dati delle viste...
doctorAle85 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2009, 00:17   #9
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da doctorAle85 Guarda i messaggi
La prima query più lunga non la posso modificare!
Io ho creato solo la 2a...quella con le viste!...e il tempo di esecuzione dovrei riuscire a farlo avvicinare a quello della 1a...

Mi potresti dare qualche consiglio per favore?...a parte il problema della creazione delle viste, che ripeto, è correttirrimo!

ps Il DB non subisce modifiche...quindi nn c'è il problema dell'aggiornamento dei dati delle viste...
MA allora fai una tabella.
Qualcosa tipo

CREATE TABLE xxxx AS SELECT
...

E ci piazzi la tua select di prima...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2009, 00:23   #10
doctorAle85
Bannato
 
Iscritto dal: Oct 2007
Messaggi: 452
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
MA allora fai una tabella.
Qualcosa tipo

CREATE TABLE xxxx AS SELECT
...

E ci piazzi la tua select di prima...
..dici le tabelle a posto delle viste o una tabella per la 2a query che ho scritto?
...cmq sia non posso aggiungere tabelle al DB, a parte il fatto delle viste!
doctorAle85 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2009, 00:25   #11
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da doctorAle85 Guarda i messaggi
..dici le tabelle a posto delle viste o una tabella per la 2a query che ho scritto?
...cmq sia non posso aggiungere tabelle al DB, a parte il fatto delle viste!
Dico una sola tabella con dentro tutti e soli i dati che ti servono.
Comunque se non puoi fare tabelle, ovvero non puoi allocare spazio, non puoi neppure usare quei particolari tipi di viste con gli indici, che di fatto usano spazio (sono piu' tabelle che viste)

Ma tutte queste limitazioni da dove arrivano?
Non puoi cambiare quella query, non puoi fare tabelle...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2009, 08:47   #12
doctorAle85
Bannato
 
Iscritto dal: Oct 2007
Messaggi: 452
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Dico una sola tabella con dentro tutti e soli i dati che ti servono.
Comunque se non puoi fare tabelle, ovvero non puoi allocare spazio, non puoi neppure usare quei particolari tipi di viste con gli indici, che di fatto usano spazio (sono piu' tabelle che viste)

Ma tutte queste limitazioni da dove arrivano?
Non puoi cambiare quella query, non puoi fare tabelle...
Allora...ho cercato online e come hai detto te gli indici per le viste non servono a niente ...poi c'è da aggiungere anche il fatto che per es Postgre non li supporta!

Vuoi sapere da dove vengono le limitazioni...beh, allora sto modificando un algoritmo per rispondere alle query...e in teoria dovrei ottimizzarlo!
Come vedi la prima query (quella lunga) è quella dell'algoritmo iniziale, mentre la 2a sarebbe la mia!
La cosa assurda come avrai capito però è questo tempo che ci impiega... che a me continua a sembrare molto strano!
doctorAle85 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2009, 08:48   #13
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Come ti ho detto prima, una vista non e' nient'altro che una stringa
"SELECT ..... FROM ... WHERE ..... etc." che viene presa e sostiuita in fase di compilazione.
Quindi poiche' viene alla fine eseguito di nuovo lo statement originale senza viste (se le cose sono state fatte correttamente), che fara' uso degli indici, se presenti.

Le viste non vengono usate per velocizzare l'esecuzione, ma per ottimizzare la scrittura del codice, per questioni di sicurezza, per minimizzare gli errori, etc.
Anche per emulare delle tabelle che originariamente erano stato realizzate senza normalizzare alcuni campi.
__________________
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2009, 09:16   #14
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da doctorAle85 Guarda i messaggi
Allora...ho cercato online e come hai detto te gli indici per le viste non servono a niente ...poi c'è da aggiungere anche il fatto che per es Postgre non li supporta!

Vuoi sapere da dove vengono le limitazioni...beh, allora sto modificando un algoritmo per rispondere alle query...e in teoria dovrei ottimizzarlo!
Come vedi la prima query (quella lunga) è quella dell'algoritmo iniziale, mentre la 2a sarebbe la mia!
La cosa assurda come avrai capito però è questo tempo che ci impiega... che a me continua a sembrare molto strano!
Ma come fai a dire che la tua query e quella originale sono uguali?
Comunque quello che ti sto proponendo e' quello di scrivere un'altra query, una nuova query, diversa probabilmente dalla tua.
Ma per poterlo fare occorre sapere cosa vorrebbe fare la query dell'algoritmo iniziale.

Quote:
Originariamente inviato da cdimauro
Anche per emulare delle tabelle che originariamente erano stato realizzate senza normalizzare alcuni campi.
Vero
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2009, 09:53   #15
doctorAle85
Bannato
 
Iscritto dal: Oct 2007
Messaggi: 452
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Ma come fai a dire che la tua query e quella originale sono uguali?
Comunque quello che ti sto proponendo e' quello di scrivere un'altra query, una nuova query, diversa probabilmente dalla tua.
Ma per poterlo fare occorre sapere cosa vorrebbe fare la query dell'algoritmo iniziale.
non posso entrare nei dettagli perchè è un lavoro per l'università...
Non voglio fare lo spavaldo ma sono sicuro al 100% che le viste sono corrette e in più le query con i simboli di tabelle e quelle con i simboli di vista danno gli stessi risultati!
doctorAle85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
1.200 CV e drift a 213 km/h: la supercar...
Shenzhou-21: esperimenti sui topi in orb...
Cloudera punta su cloud privato e intell...
Il mistero del Ryzen 7 9700X3D: prezzo p...
Posticipato il rientro dell'equipaggio c...
Propaganda russa e hactivism fra le prin...
Superluna del Castoro: stasera il satell...
NVIDIA regala una GeForce RTX 5090 Found...
Snowflake punta su Intelligence, l'IA pe...
Volkswagen realizzerà i propri chip per ...
Formula E GEN4 svelata: 600 kW di potenz...
PC Desktop HP Victus con RTX 4060 e Ryze...
Fastnet, il 'mega-cavo' di AWS che pu&og...
Offerte Amazon da non perdere: GeForce R...
Clima, l'UE trova l'accordo sul taglio d...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:11.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v