eficiencia entre decimal y entero

25/09/2003 - 23:31 por josenadim | Informe spam
Cordial saludo grupo; tengo dudas sobre un articulo, en el que no
encuentro diferencias de rendimento segun lo comentado en el sitio:
http://www.windowstimag.com/sqlmag/...uestas.htm

He realizado pruebas de rendimento sobre un millon de registros con un
valor x y no veo la mejora ,el articulo es el siguiente
**********************************************************
**********************************************************
P. Tengo una tabla con un tipo de datos decimal en un campo llamado
COD. Si emito una consulta con un filtro que pase un número, como por
ejemplo:

SELECT * FROM table1 WHERE COD = 123

SQL Server aplica una exploración de índice y de vuelve los datos muy
despacio. Sin embargo, si coloco un separador decimal tras el número,
como por ejemplo:

SELECT * FROM table1 WHERE COD = 123.

SQL Server aplica una búsqueda de índice y devuelve los resultados
mucho más deprisa. ¿Por qué el uso del separador decimal determina el
modo en que SQL Server maneja de la consulta?
R. Si no se utiliza un separador decimal al final del número, SQL
Server lo considera como un valor entero y necesita convertir los
datos para compararlos con el valor. Si se utiliza el separador
decimal, SQL Server considera correctamente que el valor es un dato de
tipo numérico, que es el tipo de los datos decimales, y puede aplicar
una búsqueda de índice, que en este caso es un método más rápido que
la exploración de índice.

Aqui estan hablando de una tabla sin indice Agrupado?,
mis tablas son de produccion con PK y el campo no es parte de la PK
aunque aqui hace index scan por indice no agrupado y luego busqueda
por marcador de indice agrupado(bookmark lookup).. sera
por eso que no encunetro la diferencia en performance???

el campo es parte de un indice no agrupado
Adicionalmente como tenemos varios campos decimales con precision de
cero preferiria pasarlos a numerico y ganar rendimento si en verdad
existe mejora. de nuevo gracias por sus opiones.

Jose Nadim

Preguntas similare

Leer las respuestas

#6 Eladio Rincón
28/09/2003 - 12:19 | Informe spam
Inside SQL Server 2000. (Copyright © 2001 by Kalen Delaney )
ISBN 0-7356-0998-5

Chapter 15. The Query Processor.
Compilation and Optimization.
How The Query Optimizer Works.
Query Analysis

Saludos,

Eladio Rincón
SQL Server MVP
http://eladio.europe.webmatrixhosting.net



"Comparte lo que sabes, aprende lo que no sepas." FGG

"Jose Nadim" escribió en el mensaje news:
Eladio una pregunta tonta ,en que capitulo del libro; yo lo tengo en
español..mil gracias ,
;-)
Respuesta Responder a este mensaje
#7 Eladio Rincón
28/09/2003 - 12:24 | Informe spam
Inside SQL Server 2000. (Copyright © 2001 by Kalen Delaney )
ISBN 0-7356-0998-5

Chapter 15. The Query Processor.
Compilation and Optimization.
How The Query Optimizer Works.
Query Analysis

Saludos,

Eladio Rincón
SQL Server MVP
http://eladio.europe.webmatrixhosting.net



"Comparte lo que sabes, aprende lo que no sepas." FGG

"Jose Nadim" escribió en el mensaje news:
Eladio una pregunta tonta ,en que capitulo del libro; yo lo tengo en
español..mil gracias ,
;-)
Respuesta Responder a este mensaje
#8 pepetron
16/03/2011 - 15:48 | Informe spam
josenadim escribió el 25/09/2003 23:31 :
Cordial saludo grupo; tengo dudas sobre un articulo, en el que no
encuentro diferencias de rendimento segun lo comentado en el sitio:
http://www.windowstimag.com/sqlmag/...uestas.htm

He realizado pruebas de rendimento sobre un millon de registros con un
valor x y no veo la mejora ,el articulo es el siguiente
**********************************************************
**********************************************************
P. Tengo una tabla con un tipo de datos decimal en un campo llamado
COD. Si emito una consulta con un filtro que pase un número, como por
ejemplo:

SELECT * FROM table1 WHERE COD = 123

SQL Server aplica una exploración de índice y de vuelve los datos
muy
despacio. Sin embargo, si coloco un separador decimal tras el número,
como por ejemplo:

SELECT * FROM table1 WHERE COD = 123.

SQL Server aplica una búsqueda de índice y devuelve los
resultados
mucho más deprisa. ¿Por qué el uso del separador decimal
determina el
modo en que SQL Server maneja de la consulta?
R. Si no se utiliza un separador decimal al final del número, SQL
Server lo considera como un valor entero y necesita convertir los
datos para compararlos con el valor. Si se utiliza el separador
decimal, SQL Server considera correctamente que el valor es un dato de
tipo numérico, que es el tipo de los datos decimales, y puede aplicar
una búsqueda de índice, que en este caso es un método
más rápido que
la exploración de índice.

Aqui estan hablando de una tabla sin indice Agrupado?,
mis tablas son de produccion con PK y el campo no es parte de la PK
aunque aqui hace index scan por indice no agrupado y luego busqueda
por marcador de indice agrupado(bookmark lookup).. sera
por eso que no encunetro la diferencia en performance???

el campo es parte de un indice no agrupado
Adicionalmente como tenemos varios campos decimales con precision de
cero preferiria pasarlos a numerico y ganar rendimento si en verdad
existe mejora. de nuevo gracias por sus opiones.

Jose Nadim


datatype decimal Field's is not optime for SQL update instruction.

I had this problem using a data type field (Decimal) like PK on update.
Using Data Integrator Tool.
I have change the PK to a string field and the update was very fast instead using decimal field.

I'm using Informix 10.0
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida