Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-10-2006, 10:27   #1
Nightmare
Senior Member
 
L'Avatar di Nightmare
 
Iscritto dal: May 2002
Città: Roma
Messaggi: 587
[ORACLE] 2 cursori o 1 union

Ho un dubbio abbastanza semplice e che non pregiudica l'esito dei risultati ottenuti ma vorrei sapere secondo voi quale è il modo migliore per affrontare il problema.

Ho 2 tabelle con campi non completamente uguali, ma questo non mi interessa, i campi che mi servono sono identici.

Devo leggere tutte e 2 le tabelle nello stesso modo.
Secondo voi è meglio creare 2 cursori dinamici, dichiarandoli 2 volte, aprendoli 2 volte e fetchando prima uno e poi l'altro e poi richiuderli ambedue o creare un unico cursore che sia la join tra le 2?
__________________
AMD Phenom II 965 Black Edition | Gigabyte 990XA-UD3 | Corsair 8GB DDR3 1666 | Intel SSD 320 160GB + WD Caviar Green 3TB | AsusGeForce GTX770 DC II| CoolerMaster 690 II | Philips 231e1sb
Nightmare è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2006, 13:01   #2
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
ti interessano piú le prestazioni o la leggibilitá ?
comunque mi sembra piú una "union"che una join
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2006, 13:17   #3
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Non so se ho capito bene il tuo problema, ma da quello che ho capito credo ti convenga fare una cosa così (pseudo pl/sql):
Codice:
begin
  for record in ( select t1.x, t1.y, t1.z
                        from tabella1 t1
                      union
                      select t2.x, t2.y, t2.z
                        from tabella2 t2 )
  loop
   ...fai quello che vuoi con il record....
  end loop;
end;
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2006, 13:22   #4
Nightmare
Senior Member
 
L'Avatar di Nightmare
 
Iscritto dal: May 2002
Città: Roma
Messaggi: 587
si scusami ho sbagliato a scrivere, è una union, nel titolo c'è scritto union cmq

mi interessano le prestazioni.
la select finale è molto massiccia e ricca di condizioni a seconda di cosa l'utente vuole visualizzare (query dinamica) e non so assolutamente quanto una union possa incidere rispetto alla gestione di 2 cursori anziche uno solo piu grande
__________________
AMD Phenom II 965 Black Edition | Gigabyte 990XA-UD3 | Corsair 8GB DDR3 1666 | Intel SSD 320 160GB + WD Caviar Green 3TB | AsusGeForce GTX770 DC II| CoolerMaster 690 II | Philips 231e1sb
Nightmare è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2006, 13:29   #5
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da Nightmare
si scusami ho sbagliato a scrivere, è una union, nel titolo c'è scritto union cmq

mi interessano le prestazioni.
la select finale è molto massiccia e ricca di condizioni a seconda di cosa l'utente vuole visualizzare (query dinamica) e non so assolutamente quanto una union possa incidere rispetto alla gestione di 2 cursori anziche uno solo piu grande
é vero c'é nel titolo

allora va bene quello che ha scritto shinya se usi pl/sql
io dichiaro il cursore poi faccio
Codice:
for rec in cursore ...
ma immagino sia giusto come l'ha scritto shinya ... anzi, carino, rapido
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2006, 13:38   #6
Nightmare
Senior Member
 
L'Avatar di Nightmare
 
Iscritto dal: May 2002
Città: Roma
Messaggi: 587
Devo farlo in cobol tramite una "prepare nome_cursore from stringa_sql" di sql embedded ma non è un problema questo, mi interessa la logica cioè, tu is meil che uan? o uan is meil che tu?

io credo che una union che faccia tutto, sia migliore sia prestazionalmente che in leggibilità
e a quanto pare lo ritenete anche voi
volevo sapere voi cosa ne penzavate
tnx
__________________
AMD Phenom II 965 Black Edition | Gigabyte 990XA-UD3 | Corsair 8GB DDR3 1666 | Intel SSD 320 160GB + WD Caviar Green 3TB | AsusGeForce GTX770 DC II| CoolerMaster 690 II | Philips 231e1sb
Nightmare è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2006, 13:50   #7
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da Nightmare
Devo farlo in cobol tramite una "prepare nome_cursore from stringa_sql" di sql embedded ma non è un problema questo, mi interessa la logica cioè, tu is meil che uan? o uan is meil che tu?

io credo che una union che faccia tutto, sia migliore sia prestazionalmente che in leggibilità
e a quanto pare lo ritenete anche voi
volevo sapere voi cosa ne penzavate
tnx
non conosco il cobol, ma veramente per niente, peró ti parlo dell'ambiente oracle/unix:
fare 2 query (diciamo semplici) una dopo l'altra, é indubbiamente piú lento che unirle con una union.
Posso prevedere che ci metta il doppio del tempo, perché aprire 2 istanze o 1 ad oracle non cambia molto quindi puó scandire 2 tabelle contemporaneamente senza cali di resa.
Io alla Vodafone (tramite l'HP) ho risolto un problema che avevano quando fetchavano la tabella clienti e puntualmente dava l'errore "rollback segment too short ...".
Il prog dell'HP memorizzava il rowid del record e continuava da li dopo l'errore
Io l'ho cambiato prendendo il MinId e il MaxId (ottenendo il numero di records), dividendo il tutto in piú pacchetti che venivano fetchati contemporaneamente. E i tempi erano quasi gli stessi col vantaggio dell'assenza di errori

Poi se cominci ad avere queries con join a destra e a manca allora il discorso cambia ...
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2006, 14:44   #8
Nightmare
Senior Member
 
L'Avatar di Nightmare
 
Iscritto dal: May 2002
Città: Roma
Messaggi: 587
posso farti l'esempio di questa select con la union

Codice:
SELECT DISTINCT(SG02_MATR), 
	   NVL(SGUNION_COGNOME,' '), 
	   NVL(SGUNION_NOME,' '), 
	   NVL(SGUNION_PROFILO,' '), 
	   NVL(SGX08_DESCRIZIONE,' '), 
	   NVL(SGX03_DESCRIZIONE,' '), 
	   SG03_ENTE_CORSO, 
	   NVL(SGX02_DESCRIZIONE,' '), 
	   NVL(SGX02_CODICE,'0'), 
	   NVL(SG03_TIPO,'0'), 
	   TO_CHAR(SG02_DATA_INIZIO,'DD/MM/YYYY'), 
	   TO_CHAR(SG03_DATA_FINE,'DD/MM/YYYY') , 
	   NVL(SGUNION_ENTE,' '), 
	   NVL(SGUNION_DIREZ_CENTRALE,'0'), 
	   NVL(SG02_ORE,'0'), 
	   NVL(SG02_GIORNI,'0'), 
	   NVL(SG02_PROV_ENTE_CORSO,' '), 
	   NVL(SG02_CATEGORIA,'0'), 
	   NVL(SG02_PROFILO_CORSO,' '), 
	   NVL(SG02_ENTE_APPAR,' '), 
	   NVL(SG02_DIREZ_APPAR,'0'), 
	   NVL(SG02_ESAME,' '), 
	   NVL(SG02_ESITO,' '), 
	   NVL(SG02_VOTAZIONE,' '), 
	   NVL(SG02_NOTE,' '), 
	   SG02_PROGRESSIVO, 
	   SGUNION_TIPODIP
FROM (SELECT sg01_matr AS sgunion_matr, 
	 		 sg01_cognome AS sgunion_cognome, 
			 sg01_nome AS sgunion_nome, 
			 sg01_profilo AS sgunion_profilo, 
			 sg01_ente AS sgunion_ente, 
			 sg01_direz_centrale AS sgunion_direz_centrale, 
			 'Dipendente AAMS' AS sgunion_tipodip
	  FROM sg01_dipens_giur 
	  WHERE sg01_matr NOT IN (SELECT sg11_matr 
	  				  	  	  FROM sg11_pensione) 
	  UNION 
	  SELECT sg06_matr AS sgunion_matr, 
	  		 sg06_cognome AS sgunion_cognome, 
			 sg06_nome AS sgunion_nome, 
			 sg06_pos_econ AS sgunion_profilo, 
			 sg06_ente AS sgunion_ente, 
			 sg06_direz_centrale AS sgunion_direz_centrale, 
			 'Dipendente Distaccato' AS sgunion_tipodip
	  FROM sg06_dist_com 
	  WHERE to_date(sg06_data_fine_dist,'DD-MM-YYYY') > TO_DATE(SYSDATE,'DD-MM-YYYY')), 
	 SG02_CORSI_FRUITI, 
	 SG03_CORSI_PIANIF, 
	 SGX02_TITOLO_CORSO, 
	 SGX03_AREA_TEMATICA, 
	 SGX08_POSIZIONE 
WHERE SG02_MATR = SGUNION_MATR AND 
	  SG02_TITOLO = SG03_TITOLO AND 
	  TO_CHAR(SG02_DATA_INIZIO,'YYYY/MM/DD') BETWEEN TO_CHAR(SG03_DATA_INIZIO,'YYYY/MM/DD') AND TO_CHAR(SG03_DATA_FINE,'YYYY/MM/DD') AND 
	  SG02_TITOLO = SGX02_CODICE(+) AND 
	  SG03_AREA = SGX03_CODICE(+) AND 
	  SGUNION_PROFILO = SGX08_CODICE(+) AND 
	  SG02_MATR = '3285425' AND 
	  TO_CHAR(SG02_DATA_INIZIO,'DD/MM/YYYY') = '12/05/2003' AND 
	  SG03_AREA = 07 AND 
	  SG02_TITOLO = 00038 AND 
	  SG03_ENTE_CORSO = 03
alla fine ho optato per la union e senza avrei dovuto fare 2 select distinte con le medesime condizioni per poter trovare l'impiegato con la matricola o le condizioni che preferisco
__________________
AMD Phenom II 965 Black Edition | Gigabyte 990XA-UD3 | Corsair 8GB DDR3 1666 | Intel SSD 320 160GB + WD Caviar Green 3TB | AsusGeForce GTX770 DC II| CoolerMaster 690 II | Philips 231e1sb
Nightmare è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2006, 14:49   #9
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
hai fatto bene secondo me. Non sembrano query costose quindi raddoppi le prestazioni e la leggibilitá forse addirittura ne guadagna perché si capisce che ti servono i dati contemporaneamente
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
The Mandalorian & Grogu: trailer fin...
Fedeltà record: Apple blinda gli utenti,...
Volkswagen ID.3 Neo: fino a 630 km di au...
GPU-Z mette i dati personali a rischio? ...
La PS6 potrebbe essere retrocompatibile ...
Amazfit Cheetah 2 Pro arriva in Italia: ...
Duolingo ammette l'errore dopo un anno: ...
Samsung Galaxy Tab S10 Lite a 249€: il t...
Samsung Micro RGB: la rivoluzione del co...
Sempre più autonomia per gli smar...
Windows sotto attacco: tre zero-day di M...
Capcom e NVIDIA spiegano il path tracing...
Commissione UE contro Google: Big G dovr...
Pale eoliche che durano 500 anni grazie ...
Blink Mini Pan-Tilt a 19,99€: la telecam...
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: 15:22.


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