Problema con Indice en campo fecha que permite nulos

09/01/2004 - 09:59 por Guillermo | Informe spam
Tengo una tabla con 5 millones de registros en SQL Server.
Esta tabla, dispone de varios campos. Uno de ellos es un
campo fecha, que admite nulos (smalldatetime).

Al ejecutar consultas contra esta tabla que utilicen el
índice del campo fecha, con la condición FECHA IS NULL en
la cláusula WHERE, me devuelve registros con la FECHA
rellena.

Comprobando el plan de ejecución, observo que realiza un
INDEX SCAN del campo fecha. Si fuerzo a realizar un FULL
SCAN con la cláusula WITH(INDEX(0)), funciona
perfectamente.

He probado a cambiar de smalldatetime a datetime, y sigue
fallando.

He probado a ejecutar consultas para una fecha concreta y
funciona perfectamente, luego sólo falla al utilizar el
índice con consultas FECHA IS NULL. Lo trágico de esto, es
que en SQL Server 7, esto funcionaba correctamente, y
después de migrar a una nueva versión, deja de funcionar.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
09/01/2004 - 10:39 | Informe spam
Qué raro... ¿has probado a reindexar el índice del campo fecha?



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Guillermo" escribió en el mensaje
news:027001c3d68e$e7e572e0$
Tengo una tabla con 5 millones de registros en SQL Server.
Esta tabla, dispone de varios campos. Uno de ellos es un
campo fecha, que admite nulos (smalldatetime).

Al ejecutar consultas contra esta tabla que utilicen el
índice del campo fecha, con la condición FECHA IS NULL en
la cláusula WHERE, me devuelve registros con la FECHA
rellena.

Comprobando el plan de ejecución, observo que realiza un
INDEX SCAN del campo fecha. Si fuerzo a realizar un FULL
SCAN con la cláusula WITH(INDEX(0)), funciona
perfectamente.

He probado a cambiar de smalldatetime a datetime, y sigue
fallando.

He probado a ejecutar consultas para una fecha concreta y
funciona perfectamente, luego sólo falla al utilizar el
índice con consultas FECHA IS NULL. Lo trágico de esto, es
que en SQL Server 7, esto funcionaba correctamente, y
después de migrar a una nueva versión, deja de funcionar.
Respuesta Responder a este mensaje
#2 Guillermo
09/01/2004 - 11:04 | Informe spam
Entre otras cosas, he probado a:
- Reindexar el índice.
- Eliminar y crear el índice.
- Actualizar estadísticas.
- Crear una BBDD nueva, crear la tabla, cargar datos con
DTS, y crear indices y restricciones como en la BBDD
original. En la nueva BBDD sigue fallando.

Parece como si fuera un bug de SQL Server, ya que si no
ejecutase consultas con la cláusula FECHA IS NULL en una
tabla con dicho campo indexado y varios millones de
registros, el fallo no se reproduce.


¿a alguién le ha ocurrido algo parecido?

Como dije, se trata de una BBDD SQL Server 2000 SP3. En
SQL7 no ocurría esto con la misma BBDD... vamos, que todo
funcionaba hasta hace un mes!

Saludos
Guillermo


Qué raro... ¿has probado a reindexar el índice del


campo fecha?



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Guillermo"


escribió en el mensaje
news:027001c3d68e$e7e572e0$
Tengo una tabla con 5 millones de registros en SQL Server.
Esta tabla, dispone de varios campos. Uno de ellos es un
campo fecha, que admite nulos (smalldatetime).

Al ejecutar consultas contra esta tabla que utilicen el
índice del campo fecha, con la condición FECHA IS NULL en
la cláusula WHERE, me devuelve registros con la FECHA
rellena.

Comprobando el plan de ejecución, observo que realiza un
INDEX SCAN del campo fecha. Si fuerzo a realizar un FULL
SCAN con la cláusula WITH(INDEX(0)), funciona
perfectamente.

He probado a cambiar de smalldatetime a datetime, y sigue
fallando.

He probado a ejecutar consultas para una fecha concreta y
funciona perfectamente, luego sólo falla al utilizar el
índice con consultas FECHA IS NULL. Lo trágico de esto, es
que en SQL Server 7, esto funcionaba correctamente, y
después de migrar a una nueva versión, deja de funcionar.



.

Respuesta Responder a este mensaje
#3 Carlos Sacristan
09/01/2004 - 11:29 | Informe spam
Pues no me ha ocurrido porque no he estado en esa situación... no sé,
envía un archivo de texto con los datos y el script de generación de la
tabla (si no pesa mucho) y lo pruebo a ver qué pasa


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Guillermo" escribió en el mensaje
news:08b401c3d698$09e21390$
Entre otras cosas, he probado a:
- Reindexar el índice.
- Eliminar y crear el índice.
- Actualizar estadísticas.
- Crear una BBDD nueva, crear la tabla, cargar datos con
DTS, y crear indices y restricciones como en la BBDD
original. En la nueva BBDD sigue fallando.

Parece como si fuera un bug de SQL Server, ya que si no
ejecutase consultas con la cláusula FECHA IS NULL en una
tabla con dicho campo indexado y varios millones de
registros, el fallo no se reproduce.


¿a alguién le ha ocurrido algo parecido?

Como dije, se trata de una BBDD SQL Server 2000 SP3. En
SQL7 no ocurría esto con la misma BBDD... vamos, que todo
funcionaba hasta hace un mes!

Saludos
Guillermo


Qué raro... ¿has probado a reindexar el índice del


campo fecha?



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Guillermo"


escribió en el mensaje
news:027001c3d68e$e7e572e0$
Tengo una tabla con 5 millones de registros en SQL Server.
Esta tabla, dispone de varios campos. Uno de ellos es un
campo fecha, que admite nulos (smalldatetime).

Al ejecutar consultas contra esta tabla que utilicen el
índice del campo fecha, con la condición FECHA IS NULL en
la cláusula WHERE, me devuelve registros con la FECHA
rellena.

Comprobando el plan de ejecución, observo que realiza un
INDEX SCAN del campo fecha. Si fuerzo a realizar un FULL
SCAN con la cláusula WITH(INDEX(0)), funciona
perfectamente.

He probado a cambiar de smalldatetime a datetime, y sigue
fallando.

He probado a ejecutar consultas para una fecha concreta y
funciona perfectamente, luego sólo falla al utilizar el
índice con consultas FECHA IS NULL. Lo trágico de esto, es
que en SQL Server 7, esto funcionaba correctamente, y
después de migrar a una nueva versión, deja de funcionar.



.

Respuesta Responder a este mensaje
#4 Miguel Egea
09/01/2004 - 11:53 | Informe spam
¿puedes probar a poner
set ansi_nulls off
y ejecutar la select en lugar de con isnull con =null?
Cuentanos


Saludos

Miguel Egea
Microsoft SQL-SERVER MVP
Brigada Anti-Cursores
"Guillermo" escribió en el mensaje
news:08b401c3d698$09e21390$
Entre otras cosas, he probado a:
- Reindexar el índice.
- Eliminar y crear el índice.
- Actualizar estadísticas.
- Crear una BBDD nueva, crear la tabla, cargar datos con
DTS, y crear indices y restricciones como en la BBDD
original. En la nueva BBDD sigue fallando.

Parece como si fuera un bug de SQL Server, ya que si no
ejecutase consultas con la cláusula FECHA IS NULL en una
tabla con dicho campo indexado y varios millones de
registros, el fallo no se reproduce.


¿a alguién le ha ocurrido algo parecido?

Como dije, se trata de una BBDD SQL Server 2000 SP3. En
SQL7 no ocurría esto con la misma BBDD... vamos, que todo
funcionaba hasta hace un mes!

Saludos
Guillermo


Qué raro... ¿has probado a reindexar el índice del


campo fecha?



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Guillermo"


escribió en el mensaje
news:027001c3d68e$e7e572e0$
Tengo una tabla con 5 millones de registros en SQL Server.
Esta tabla, dispone de varios campos. Uno de ellos es un
campo fecha, que admite nulos (smalldatetime).

Al ejecutar consultas contra esta tabla que utilicen el
índice del campo fecha, con la condición FECHA IS NULL en
la cláusula WHERE, me devuelve registros con la FECHA
rellena.

Comprobando el plan de ejecución, observo que realiza un
INDEX SCAN del campo fecha. Si fuerzo a realizar un FULL
SCAN con la cláusula WITH(INDEX(0)), funciona
perfectamente.

He probado a cambiar de smalldatetime a datetime, y sigue
fallando.

He probado a ejecutar consultas para una fecha concreta y
funciona perfectamente, luego sólo falla al utilizar el
índice con consultas FECHA IS NULL. Lo trágico de esto, es
que en SQL Server 7, esto funcionaba correctamente, y
después de migrar a una nueva versión, deja de funcionar.



.

Respuesta Responder a este mensaje
#5 Anonimo
09/01/2004 - 11:59 | Informe spam
Los datos no puedo pasártelos (son 5GB esta tabla). El DDL
si puedo, pero claro, la única solución es generar datos
de prueba un con bucle que inserte valores aleatorios.

La máquina en que se ejecuta es un Cluster de IBM, con 3GB
de RAM en cada nodo (por su tuviera algo que ver, pues la
tabla y sus indices son 5GB).



Pues no me ha ocurrido porque no he estado en esa


situación... no sé,
envía un archivo de texto con los datos y el script de


generación de la
tabla (si no pesa mucho) y lo pruebo a ver qué pasa


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Guillermo"


escribió en el mensaje
news:08b401c3d698$09e21390$
Entre otras cosas, he probado a:
- Reindexar el índice.
- Eliminar y crear el índice.
- Actualizar estadísticas.
- Crear una BBDD nueva, crear la tabla, cargar datos con
DTS, y crear indices y restricciones como en la BBDD
original. En la nueva BBDD sigue fallando.

Parece como si fuera un bug de SQL Server, ya que si no
ejecutase consultas con la cláusula FECHA IS NULL en una
tabla con dicho campo indexado y varios millones de
registros, el fallo no se reproduce.


¿a alguién le ha ocurrido algo parecido?

Como dije, se trata de una BBDD SQL Server 2000 SP3. En
SQL7 no ocurría esto con la misma BBDD... vamos, que todo
funcionaba hasta hace un mes!

Saludos
Guillermo


Qué raro... ¿has probado a reindexar el índice del


campo fecha?



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Guillermo"


escribió en el mensaje
news:027001c3d68e$e7e572e0$
Tengo una tabla con 5 millones de registros en SQL




Server.
Esta tabla, dispone de varios campos. Uno de ellos es un
campo fecha, que admite nulos (smalldatetime).

Al ejecutar consultas contra esta tabla que utilicen el
índice del campo fecha, con la condición FECHA IS NULL en
la cláusula WHERE, me devuelve registros con la FECHA
rellena.

Comprobando el plan de ejecución, observo que realiza un
INDEX SCAN del campo fecha. Si fuerzo a realizar un FULL
SCAN con la cláusula WITH(INDEX(0)), funciona
perfectamente.

He probado a cambiar de smalldatetime a datetime, y sigue
fallando.

He probado a ejecutar consultas para una fecha concreta y
funciona perfectamente, luego sólo falla al utilizar el
índice con consultas FECHA IS NULL. Lo trágico de esto,




es
que en SQL Server 7, esto funcionaba correctamente, y
después de migrar a una nueva versión, deja de funcionar.



.





.

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