Cálculo sobre campo indexado

29/07/2004 - 10:40 por Xavi | Informe spam
Hola!

Yo tengo un campo indexado. Este campo es una máscara de bits que representa
una suma de estados, parecido a la propiedad State de un recordset.

Mi pregunta es: por el hecho de estar indexado, ¿es óptima una consulta del
tipo

SELECT * FROM MyTable
WHERE State & 1 > 0
?

Muchas gracias


Xavi

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
29/07/2004 - 11:04 | Informe spam
Echa un vistazo al plan de ejecución y revisa si efectivamente el índice
sobre ese campo lo utiliza el motor


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


"Xavi" escribió en el mensaje
news:#
Hola!

Yo tengo un campo indexado. Este campo es una máscara de bits que


representa
una suma de estados, parecido a la propiedad State de un recordset.

Mi pregunta es: por el hecho de estar indexado, ¿es óptima una consulta


del
tipo

SELECT * FROM MyTable
WHERE State & 1 > 0
?

Muchas gracias


Xavi


Respuesta Responder a este mensaje
#2 Miguel Egea
29/07/2004 - 18:40 | Informe spam
La explicación de Eladio es magnífica, como siempre, así que nada mas que
aportar al respecto,

Sin embargo si yo tuviese que optimizar esa consulta (precisamente esa)
crearía un campo calculado en esa tabla que fuese State&1 y sobre este nuevo
campo crearía un índice para proceder a bucar con where NuevoCampo>0,
Esto no te garantiza un plan de ejecución mejor, dependerá de cuantos campos
cumplan la condición, si son poquitos, entonces usará el índice, si son
muchos, seguramente recorrerá la tabla entera.


-
Miguel Egea Gómez
Microsoft SQL-Server MVP
Webmaster de PortalSql.Com
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?


"Xavi" escribió en el mensaje
news:%
Hola!

Yo tengo un campo indexado. Este campo es una máscara de bits que


representa
una suma de estados, parecido a la propiedad State de un recordset.

Mi pregunta es: por el hecho de estar indexado, ¿es óptima una consulta


del
tipo

SELECT * FROM MyTable
WHERE State & 1 > 0
?

Muchas gracias


Xavi



Respuesta Responder a este mensaje
#3 Xavi
30/07/2004 - 15:31 | Informe spam
Gracias a todos, me ha sido muy útil vuestra información.

Xavi


"Miguel Egea" escribió en el mensaje
news:
La explicación de Eladio es magnífica, como siempre, así que nada mas que
aportar al respecto,

Sin embargo si yo tuviese que optimizar esa consulta (precisamente esa)
crearía un campo calculado en esa tabla que fuese State&1 y sobre este


nuevo
campo crearía un índice para proceder a bucar con where NuevoCampo>0,
Esto no te garantiza un plan de ejecución mejor, dependerá de cuantos


campos
cumplan la condición, si son poquitos, entonces usará el índice, si son
muchos, seguramente recorrerá la tabla entera.


-
Miguel Egea Gómez
Microsoft SQL-Server MVP
Webmaster de PortalSql.Com
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?


"Xavi" escribió en el mensaje
news:%
> Hola!
>
> Yo tengo un campo indexado. Este campo es una máscara de bits que
representa
> una suma de estados, parecido a la propiedad State de un recordset.
>
> Mi pregunta es: por el hecho de estar indexado, ¿es óptima una consulta
del
> tipo
>
> SELECT * FROM MyTable
> WHERE State & 1 > 0
> ?
>
> Muchas gracias
>
>
> Xavi
>
>
>



Respuesta Responder a este mensaje
#4 Eladio Rincón
31/07/2004 - 00:06 | Informe spam
Xavi,

¿qué solución has adoptado?


Eladio Rincón
SQL Server MVP, PASS Spanish Group
Solid Quality Learning Iberoamericana
http://www.SolidQualityLearning.com

http://www.siquelnet.com
"Comparte lo que sabes, aprende lo que no sepas." FGG


Xavi wrote:
Gracias a todos, me ha sido muy útil vuestra información.

Xavi


"Miguel Egea" escribió en el
mensaje news:
La explicación de Eladio es magnífica, como siempre, así que nada
mas que aportar al respecto,

Sin embargo si yo tuviese que optimizar esa consulta (precisamente
esa) crearía un campo calculado en esa tabla que fuese State&1 y
sobre este nuevo campo crearía un índice para proceder a bucar con
where NuevoCampo>0, Esto no te garantiza un plan de ejecución mejor,
dependerá de cuantos campos cumplan la condición, si son poquitos,
entonces usará el índice, si son muchos, seguramente recorrerá la
tabla entera.


-
Miguel Egea Gómez
Microsoft SQL-Server MVP
Webmaster de PortalSql.Com
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?


"Xavi" escribió en el mensaje
news:%
Hola!

Yo tengo un campo indexado. Este campo es una máscara de bits que
representa una suma de estados, parecido a la propiedad State de un
recordset.

Mi pregunta es: por el hecho de estar indexado, ¿es óptima una
consulta del tipo

SELECT * FROM MyTable
WHERE State & 1 > 0
?

Muchas gracias


Xavi
Respuesta Responder a este mensaje
#5 Xavi
02/08/2004 - 10:04 | Informe spam
Pues he optado por una solución poco generalizable pero útil. La verdad es
que este campo State sólo puede tener una máscara de 4 bits, es decir, a lo
sumo un valor de 15. Por tanto, preguntar State & 1 es lo mismo que
preguntar State IN ( 1, 3, 5, 7, 9, 11, 13, 15 ). Es un poco lamentable pero
utiliza el índice. La ventaja es que sé positivamente que el valor nunca
trascenderá de 15.

Gracias

Xavi




"Eladio Rincón" escribió en el mensaje
news:%
Xavi,

¿qué solución has adoptado?


Eladio Rincón
SQL Server MVP, PASS Spanish Group
Solid Quality Learning Iberoamericana
http://www.SolidQualityLearning.com

http://www.siquelnet.com
"Comparte lo que sabes, aprende lo que no sepas." FGG


Xavi wrote:
Gracias a todos, me ha sido muy útil vuestra información.

Xavi


"Miguel Egea" escribió en el
mensaje news:
La explicación de Eladio es magnífica, como siempre, así que nada
mas que aportar al respecto,

Sin embargo si yo tuviese que optimizar esa consulta (precisamente
esa) crearía un campo calculado en esa tabla que fuese State&1 y
sobre este nuevo campo crearía un índice para proceder a bucar con
where NuevoCampo>0, Esto no te garantiza un plan de ejecución mejor,
dependerá de cuantos campos cumplan la condición, si son poquitos,
entonces usará el índice, si son muchos, seguramente recorrerá la
tabla entera.


-
Miguel Egea Gómez
Microsoft SQL-Server MVP
Webmaster de PortalSql.Com
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?


"Xavi" escribió en el mensaje
news:%
Hola!

Yo tengo un campo indexado. Este campo es una máscara de bits que
representa una suma de estados, parecido a la propiedad State de un
recordset.

Mi pregunta es: por el hecho de estar indexado, ¿es óptima una
consulta del tipo

SELECT * FROM MyTable
WHERE State & 1 > 0
?

Muchas gracias


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