Duda en query

27/07/2006 - 22:46 por Sans | Informe spam
Les comento que tengo una consulta sobre una tabla de poco mas de 7
millones de registros la cual me devuelve diferentes resultados con las
mismas condiciones, ejemplo..

select *
from tabla
where F_Doc between '20060101 00:00' and '20060115 23:59'
and F_Recibio is null

me trae registros cuyo campo F_Recibio no es nulo, pero si cambio la
consulta a

select *
from tabla
where F_Doc between '20060101 00:00' and '20060115 23:59'
and isnull(F_Recibio,'') = ''

me trae los registros correctos(solo los que son nulos en el campo
F_Recibio), tambien obtengo el resultado correcto si forzo el indice

select *
from tabla with(index(XXX))
where F_Doc between '20060101 00:00' and '20060115 23:59'
and F_Recibio is null

Hay alguna razon para lo anterior???, agradezco de antemano sus
comentarios

La tabla se reindexa cada semana...
Uso sql 2000 sp3

Preguntas similare

Leer las respuestas

#1 Victor Koch
27/07/2006 - 22:55 | Informe spam
Hola Sans

Para mi hay registros que en el campo F_Recibio tenes grabado ''. Proba con
esta sentencia

select *
from tabla
where F_Doc between '20060101 00:00' and '20060115 23:59'
and (F_Recibio is null or F_Recibio = '')

Un saludo, Víctor Koch.


"Sans" escribió en el mensaje
news:
Les comento que tengo una consulta sobre una tabla de poco mas de 7
millones de registros la cual me devuelve diferentes resultados con las
mismas condiciones, ejemplo..

select *
from tabla
where F_Doc between '20060101 00:00' and '20060115 23:59'
and F_Recibio is null

me trae registros cuyo campo F_Recibio no es nulo, pero si cambio la
consulta a

select *
from tabla
where F_Doc between '20060101 00:00' and '20060115 23:59'
and isnull(F_Recibio,'') = ''

me trae los registros correctos(solo los que son nulos en el campo
F_Recibio), tambien obtengo el resultado correcto si forzo el indice

select *
from tabla with(index(XXX))
where F_Doc between '20060101 00:00' and '20060115 23:59'
and F_Recibio is null

Hay alguna razon para lo anterior???, agradezco de antemano sus
comentarios

La tabla se reindexa cada semana...
Uso sql 2000 sp3

Respuesta Responder a este mensaje
#2 Sans
27/07/2006 - 23:34 | Informe spam
En el campo F_Recibio el query erroneo me muestra registros que tienen
una fecha valida, es decir me muestra registros que tienen informacion
en dicho campo...

Saludos
Respuesta Responder a este mensaje
#3 Miguel Egea
28/07/2006 - 10:06 | Informe spam
que la primera y la segunda devuelvan resultados distinto podría ser normal
si algunos datos tienen '' en lugar de null , que usando un índice devuelva
otra cosa es muy muy raro, ejecuta dbcc checdb a ver si hay errores.

Saludos
Miguel Egea
"Sans" wrote in message
news:
Les comento que tengo una consulta sobre una tabla de poco mas de 7
millones de registros la cual me devuelve diferentes resultados con las
mismas condiciones, ejemplo..

select *
from tabla
where F_Doc between '20060101 00:00' and '20060115 23:59'
and F_Recibio is null

me trae registros cuyo campo F_Recibio no es nulo, pero si cambio la
consulta a

select *
from tabla
where F_Doc between '20060101 00:00' and '20060115 23:59'
and isnull(F_Recibio,'') = ''

me trae los registros correctos(solo los que son nulos en el campo
F_Recibio), tambien obtengo el resultado correcto si forzo el indice

select *
from tabla with(index(XXX))
where F_Doc between '20060101 00:00' and '20060115 23:59'
and F_Recibio is null

Hay alguna razon para lo anterior???, agradezco de antemano sus
comentarios

La tabla se reindexa cada semana...
Uso sql 2000 sp3

Respuesta Responder a este mensaje
#4 Alejandro Mesa
28/07/2006 - 15:16 | Informe spam
Sans,

Chequea si esto esta relacionado con este bug de SQL Server sp3. Instala el
ultimo service pack (sp 4) o el hotfix MS03-031.

FIX: A parallel query may return unexpected results
http://support.microsoft.com/kb/814509/en-us


AMB

"Sans" wrote:

Les comento que tengo una consulta sobre una tabla de poco mas de 7
millones de registros la cual me devuelve diferentes resultados con las
mismas condiciones, ejemplo..

select *
from tabla
where F_Doc between '20060101 00:00' and '20060115 23:59'
and F_Recibio is null

me trae registros cuyo campo F_Recibio no es nulo, pero si cambio la
consulta a

select *
from tabla
where F_Doc between '20060101 00:00' and '20060115 23:59'
and isnull(F_Recibio,'') = ''

me trae los registros correctos(solo los que son nulos en el campo
F_Recibio), tambien obtengo el resultado correcto si forzo el indice

select *
from tabla with(index(XXX))
where F_Doc between '20060101 00:00' and '20060115 23:59'
and F_Recibio is null

Hay alguna razon para lo anterior???, agradezco de antemano sus
comentarios

La tabla se reindexa cada semana...
Uso sql 2000 sp3


Respuesta Responder a este mensaje
#5 Sans
29/07/2006 - 19:28 | Informe spam
Como siempre Alejandro, le diste al clavo...esa es la solucion a mi
problema, instale el sp4 en un servidor de respaldo que tengo y el
problema se corrigio...

Tengo mis dudas para instalarle el sp4 al servidor de produccion, ya
que he leido que corrige algunos problemas pero provoca otros...será
posible instalarle solamente el hotfix???, es recomendable hacerlo???..

Saludos y gracias...


Alejandro Mesa ha escrito:

Sans,

Chequea si esto esta relacionado con este bug de SQL Server sp3. Instala el
ultimo service pack (sp 4) o el hotfix MS03-031.

FIX: A parallel query may return unexpected results
http://support.microsoft.com/kb/814509/en-us


AMB

"Sans" wrote:
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida