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

#6 Eladio Rincón
02/08/2004 - 11:07 | Informe spam
Te das cuenta? has conseguido convertir un valor NON-SARG en SARG ... de esta forma el índice (como comentas) será tenido en cuenta por el optimizador ;-)

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:
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?



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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida