Query con risultati diversi

venerdì 24 aprile 2009 - 17.06

M@riBlack Profilo | Newbie

Ciao a tutti sono nuova su questo forum e avrei bisogno del vostro aiuto! Sto eseguendo alcune query complesse sia su SQL Server 2005 che su Oracle 9i Enterpr.Edition! Con stupore e rammarico mi sono imbattuta in un paio di query che, interrogando uno stesso database, restituiscono due risultati completamente diversi a seconda che vengano eseguite su uno o l'altro DBMS. Premetto che le query sono identiche. L'utilizzo di T-SQL o PL/SQL potrebbe dunque portare a tali conseguenze? Questi due DBMS hanno un piano di accesso ai dati diverso? Inoltre ho notato che questo problema si presenta quando ci sono più condizioni poste in 'and' nella clausola where della query. Grazie a chi vorrà rispondermi. Bye

lbenaglia Profilo | Guru

>Ciao a tutti sono nuova su questo forum e avrei bisogno
>del vostro aiuto!

Ciao Mariangela,

Benvenuta sui forum di .net hell

>Sto eseguendo alcune query complesse sia su
>SQL Server 2005 che su Oracle 9i Enterpr.Edition! Con stupore
>e rammarico mi sono imbattuta in un paio di query che, interrogando
>uno stesso database, restituiscono due risultati completamente
>diversi a seconda che vengano eseguite su uno o l'altro DBMS.
>Premetto che le query sono identiche. L'utilizzo di T-SQL o PL/SQL
>potrebbe dunque portare a tali conseguenze?
Diciamo che ogni DBMS implementa un proprio "dialetto" SQL generalmente basato sullo standard ANSI SQL, pertanto se si utilizzano costrutti proprietari è facile imbattersi in comandi che funzionano esclusivamente su un certo prodotto.
Il tuo caso però è interessante: la query viene eseguita da entrambi i DBMS ma restituisce result set differenti.
La prima cosa che mi viene da pensare è che le tabelle sono popolate con dati differenti, quindi è normale che lo siano anche i result set.

>Questi due DBMS hanno un piano di accesso ai dati diverso?
E' molto probabile, anzi spesso cambia da versione a versione di uno stesso prodotto.
Ad ogni modo un piano di esecuzione differente NON comporta risultati differenti, al più prestazioni differenti!

>Inoltre ho notato che questo
>problema si presenta quando ci sono più condizioni poste in 'and'
>nella clausola where della query.
Questo mi incuriosisce ancora di più.
Puoi postare un esempio completo in T-SQL con la struttura delle tabelle (CREATE TABLE), alcune righe di prova (INSERT INTO), la query (SELECT...) ed il result set desiderato?

>Grazie a chi vorrà rispondermi.
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5