SQL Server - Que sera mas eficiente?

 
Vista:

Que sera mas eficiente?

Publicado por pedrok (29 intervenciones) el 16/02/2006 21:05:01
Autor:
pedrok [email protected] 6
Fecha: 13/02/2006 21:47:34
Asunto: Que es mas eficiente?
Hola foreros
Resulta que estoy desarrollando contra una base de datos en SQL server 2000. Tengo algunas tablas que uso como diccionarios y las consulta y a veces guardo valores en otras tablas Maestras.
Ej: En TiposDocumentos tengo Codigo: DNI, LC, LE,etc es decir como codigo uso esta abreviatura. Otro ejemplo, en un campo que guardo si un empleago esta activo o no, en lugar de poner 1 y 0 pongo A (activo) y I (inactivo) esto hace mucho mas legible la base-
En definitiva, quiero saber si usando letras en lugar de nros en casos como los mostrados (como codigos), implicaria desperdicio en el almacenamiento y mayores tiempos de querys o seria algo imperceptible comparado con las ventajas de legibilidad de los datos?
saludos y espero vuestros consejos pedro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Que sera mas eficiente?

Publicado por Isaías (3308 intervenciones) el 17/02/2006 20:20:02
Si hablas de EFICIENCIA al momento de sacar (SELECT), los datos de tus tablas, te la dara los INDICES que tengas declarados.

En cuanto a usar, numero o letras en tus llaves, es igual, simplemente recuerda, que para STRINGs o Cadenas de caracteres, dependiendo de la longitud de la cadena a almacenar, debes usar CHAR(x), VARCHAR(x) o TEXT.

Ejemplo, si voy a almacenar una cadena de LONGITUD 3, es ilogico que haga esto:

DECLARE @MyCadena VARCHAR(1000)
SET @MyCadena = 'ABC'

Lo logico es:

DECLARE @MyCadena CHAR(3)
SET @MyCadena = 'ABC'

Esto, seria una tonteria:

DECLARE @MyCadena TEXT
SET @MyCadena = 'ABC'

Revisa los tipos de datos.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Que sera mas eficiente?

Publicado por pedrok (29 intervenciones) el 17/02/2006 21:30:23
Te agradezco la respuesta.

Y que pasaria si tengo campos por es un campo que me indique si un cliente esta activo o inactivo, tendria dos posibilidades:

1) Colocar un Campo numerico en donde 1 signifique activo y 0 inactivo

2) Colocar un campo char en donde A sea activo y I inactivo. Con lo cual en este ultimo gano en legibilidad, pero es aconsejable esto? es decir no estaria desperdiciando almacenamiento ? es algo que se me ocurrio y no se si esta bien hacerlo, pero lo que me sucede es que a veces con tantos campos con 2/3/5 o mas valores es mas practico poner una letra que poner un codigo e ir a buscar la descripcion a otro lado.

que opinas?

pedrok
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Que sera mas eficiente?

Publicado por Isaías (3308 intervenciones) el 17/02/2006 23:25:23
Lo mismo te pasa con campos NUMERICOS, sobre todo en los catalogos.

Creo que a SQL Server le es mas facil comparar contra NUMEROS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Que sera mas eficiente?

Publicado por Cecilia Colalongo (165 intervenciones) el 17/02/2006 23:28:27
El problema que tienes con ese tipo de campos de pocas opciones que eventualmente pueden crecer y a veces se termina haciendo "hardcoding" en la aplicación cliente y en lugar de guardar integridad referencial.

Por supuesto que depende del tipo de campo y de la lógica del diseño de la base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Que sera mas eficiente?

Publicado por pedrok (29 intervenciones) el 20/02/2006 21:29:03
Hola

Pues creo que en los campos en que estaba planeando usar lo que explique eran justamente campos con pocas opciones y que no van a crecer en el tiempo, asi que hasta ahi todo bien.

De todos modos voy a tratar de reducir su aplicacion lo mas posible para evitar los inconvenientes que menciona Cecilia. Ademas como dice Isaias sql es mas eficiente con la comparacion numerica.

gracias x la ayuda
pedro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar