Indice Principal Agrupado ayuda.......SQL2000

26/10/2006 - 19:44 por Dany Acosta | Informe spam
Amigos,

Necesito crear un indice Principal por 3 Campos Agrupados en una Tabla
que se calcula una cantidad de registros aproximado de 8,000 por Año.

Cual seria una mejor forma y las mas optima de crear un Indice Principal
Agrupado:

Asi:
Campo1+Campo2+Campo3 > Indice Principal Agrupado
Valores:
A+B+C

o Asi:
Tener un Campo que sea el tamaño total de los 3 campos y almacene a indizar.

CampoPK --> Indice Principal
Valores:
ABC

CampoPk --> Es el contenido de los tres Campos. (A,B,C)


Nota:
Los Campos agrupar son tipo Char.

Gracias

Dany Acosta

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
26/10/2006 - 21:57 | Informe spam
Dany,

Nota:
Los Campos agrupar son tipo Char.



char 1, 2, 3 ???????????????

Por que clustered, piensas agrupar y ordenar por estas columnas, o acaso
usas algun filtro de rango por ellas?


AMB


"Dany Acosta" wrote:

Amigos,

Necesito crear un indice Principal por 3 Campos Agrupados en una Tabla
que se calcula una cantidad de registros aproximado de 8,000 por Año.

Cual seria una mejor forma y las mas optima de crear un Indice Principal
Agrupado:

Asi:
Campo1+Campo2+Campo3 > Indice Principal Agrupado
Valores:
A+B+C

o Asi:
Tener un Campo que sea el tamaño total de los 3 campos y almacene a indizar.

CampoPK --> Indice Principal
Valores:
ABC

CampoPk --> Es el contenido de los tres Campos. (A,B,C)


Nota:
Los Campos agrupar son tipo Char.

Gracias

Dany Acosta

Respuesta Responder a este mensaje
#2 Dany Acosta
26/10/2006 - 23:11 | Informe spam
Filtros No uso, lo hago con la intencion de ganar velocidad de respuesta
en las consultas de cabecera-detalle.

Tengo una tabla Detalle de Facturas que tiene estos campos

Tabla: d_factura
Anho Char(4)
TipoMov C(3)
NroDocu c(12)
NroItem c(4)
fecha datetime
Codcli c(15)
etc...

Entonces necesito tener un indice Clustered por los primeros 3 campos
Anho+TipoMov+NroDOcu

Porque son los campos que enlazan con la cabecera de Facturas, y ademas
son los mas Rankeados en las consultas en otras pantallas:

Mi duda era Si de algo sirve meterlo en un nuevo Campo llamado TablaPK
las 3 columnas y ese campo sea el PrimayKey, si aplico eso tendria que
tener en la cabecera de factura el mismo tipo de campo y evitar crear un
Primary Key Agrupado. Ganaria algo con esa forma????

Mi tabla modificada seria asi:

Tabla: d_factura
dFactPK c(19) --> Anho+TipoMov+NroDocu --> Primary Key
Anho Char(4)
TipoMov C(3)
NroDocu c(12)
NroItem c(4)
fecha datetime
Codcli c(15)
etc...

gracias





Alejandro Mesa escribió:
Dany,

Nota:
Los Campos agrupar son tipo Char.



char 1, 2, 3 ???????????????

Por que clustered, piensas agrupar y ordenar por estas columnas, o acaso
usas algun filtro de rango por ellas?


AMB


"Dany Acosta" wrote:

Amigos,

Necesito crear un indice Principal por 3 Campos Agrupados en una Tabla
que se calcula una cantidad de registros aproximado de 8,000 por Año.

Cual seria una mejor forma y las mas optima de crear un Indice Principal
Agrupado:

Asi:
Campo1+Campo2+Campo3 > Indice Principal Agrupado
Valores:
A+B+C

o Asi:
Tener un Campo que sea el tamaño total de los 3 campos y almacene a indizar.

CampoPK --> Indice Principal
Valores:
ABC

CampoPk --> Es el contenido de los tres Campos. (A,B,C)


Nota:
Los Campos agrupar son tipo Char.

Gracias

Dany Acosta

Respuesta Responder a este mensaje
#3 Alejandro Mesa
27/10/2006 - 14:38 | Informe spam
Dany,

La clave primaria de una tabla no siempre debe usar un indice clustered.
Debes analizar primero el tipo de consultas que vas a usar contra esa tabla,
para que puedas localizar las columnas usadas en filtros de grupo o en la
clausula "group by". Tambien debes analizar el ancho de esa llave, puesto que
esta sera usada por todos los indices nonclustered de la tabla para
referenciar o localizar las filas correspondientes en la tabla. Te paso unos
links donde podras leer sobre el tema de indices.

En cuanto a concatenar las columnas para formar una unica columna que sera
usada en el indice, esto no es necesario y ademas no es buena practica. En
SQL Server se pueden crear indices multi-columnas (indices compuestos), pero
se debe hacer un analisis de la distribucion de los valores dentro de cada
una de ellas para escojer el orden de las columnas en el indice. Se
recomienda usar la columna con mayor selectividad (menos filas por cada
valor) como la primera en la lista porque SQL Server (al menos en la version
2000) solo guarda las estadisticas de distribucion para esta columna. Para
que un indice compuesto sea usado optimamente por SQL Server, esta primera
columna debe ser referenciada en la consulta.

Estadísticas de distribución en SQL Server 2000 (I)
http://www.helpdna.net/colab02.htm

Estadísticas de Distribución en SQL Server 2000 (2)
http://www.configuracionesintegrale...articulo35

Ajuste del rendimiento de las consultas
http://msdn2.microsoft.com/es-es/li...72984.aspx

Ajuste y optimización del rendimiento de MS SQL Server para programadores,
primera parte: Introducción a los aspectos de rendimiento
http://www.microsoft.com/latam/tech...005/art02/

SQL Server Performance Tuning Tips
http://www.sql-server-performance.c...rmance.asp

En el ultimo link, si puedes leete los siguientes topicos:

Indexes (General)
Indexes (Clustered)
Indexes (Composite)
Indexes (Covering)
Indexes (Non-clustered)
Indexes (Rebuilding)
Index Tuning Wizard


AMB


"Dany Acosta" wrote:

Filtros No uso, lo hago con la intencion de ganar velocidad de respuesta
en las consultas de cabecera-detalle.

Tengo una tabla Detalle de Facturas que tiene estos campos

Tabla: d_factura
Anho Char(4)
TipoMov C(3)
NroDocu c(12)
NroItem c(4)
fecha datetime
Codcli c(15)
etc...

Entonces necesito tener un indice Clustered por los primeros 3 campos
Anho+TipoMov+NroDOcu

Porque son los campos que enlazan con la cabecera de Facturas, y ademas
son los mas Rankeados en las consultas en otras pantallas:

Mi duda era Si de algo sirve meterlo en un nuevo Campo llamado TablaPK
las 3 columnas y ese campo sea el PrimayKey, si aplico eso tendria que
tener en la cabecera de factura el mismo tipo de campo y evitar crear un
Primary Key Agrupado. Ganaria algo con esa forma????

Mi tabla modificada seria asi:

Tabla: d_factura
dFactPK c(19) --> Anho+TipoMov+NroDocu --> Primary Key
Anho Char(4)
TipoMov C(3)
NroDocu c(12)
NroItem c(4)
fecha datetime
Codcli c(15)
etc...

gracias





Alejandro Mesa escribió:
> Dany,
>
>> Nota:
>> Los Campos agrupar son tipo Char.
>
> char 1, 2, 3 ???????????????
>
> Por que clustered, piensas agrupar y ordenar por estas columnas, o acaso
> usas algun filtro de rango por ellas?
>
>
> AMB
>
>
> "Dany Acosta" wrote:
>
>> Amigos,
>>
>> Necesito crear un indice Principal por 3 Campos Agrupados en una Tabla
>> que se calcula una cantidad de registros aproximado de 8,000 por Año.
>>
>> Cual seria una mejor forma y las mas optima de crear un Indice Principal
>> Agrupado:
>>
>> Asi:
>> Campo1+Campo2+Campo3 > Indice Principal Agrupado
>> Valores:
>> A+B+C
>>
>> o Asi:
>> Tener un Campo que sea el tamaño total de los 3 campos y almacene a indizar.
>>
>> CampoPK --> Indice Principal
>> Valores:
>> ABC
>>
>> CampoPk --> Es el contenido de los tres Campos. (A,B,C)
>>
>>
>> Nota:
>> Los Campos agrupar son tipo Char.
>>
>> Gracias
>>
>> Dany Acosta
>>

Respuesta Responder a este mensaje
#4 Dany Acosta
27/10/2006 - 15:19 | Informe spam
Gracias Amigo por la documentación esta excelente y abre mas claro
el panorama que tengo



Alejandro Mesa escribió:
Dany,

La clave primaria de una tabla no siempre debe usar un indice clustered.
Debes analizar primero el tipo de consultas que vas a usar contra esa tabla,
para que puedas localizar las columnas usadas en filtros de grupo o en la
clausula "group by". Tambien debes analizar el ancho de esa llave, puesto que
esta sera usada por todos los indices nonclustered de la tabla para
referenciar o localizar las filas correspondientes en la tabla. Te paso unos
links donde podras leer sobre el tema de indices.

En cuanto a concatenar las columnas para formar una unica columna que sera
usada en el indice, esto no es necesario y ademas no es buena practica. En
SQL Server se pueden crear indices multi-columnas (indices compuestos), pero
se debe hacer un analisis de la distribucion de los valores dentro de cada
una de ellas para escojer el orden de las columnas en el indice. Se
recomienda usar la columna con mayor selectividad (menos filas por cada
valor) como la primera en la lista porque SQL Server (al menos en la version
2000) solo guarda las estadisticas de distribucion para esta columna. Para
que un indice compuesto sea usado optimamente por SQL Server, esta primera
columna debe ser referenciada en la consulta.

Estadísticas de distribución en SQL Server 2000 (I)
http://www.helpdna.net/colab02.htm

Estadísticas de Distribución en SQL Server 2000 (2)
http://www.configuracionesintegrale...articulo35

Ajuste del rendimiento de las consultas
http://msdn2.microsoft.com/es-es/li...72984.aspx

Ajuste y optimización del rendimiento de MS SQL Server para programadores,
primera parte: Introducción a los aspectos de rendimiento
http://www.microsoft.com/latam/tech...005/art02/

SQL Server Performance Tuning Tips
http://www.sql-server-performance.c...rmance.asp

En el ultimo link, si puedes leete los siguientes topicos:

Indexes (General)
Indexes (Clustered)
Indexes (Composite)
Indexes (Covering)
Indexes (Non-clustered)
Indexes (Rebuilding)
Index Tuning Wizard


AMB


"Dany Acosta" wrote:

Filtros No uso, lo hago con la intencion de ganar velocidad de respuesta
en las consultas de cabecera-detalle.

Tengo una tabla Detalle de Facturas que tiene estos campos

Tabla: d_factura
Anho Char(4)
TipoMov C(3)
NroDocu c(12)
NroItem c(4)
fecha datetime
Codcli c(15)
etc...

Entonces necesito tener un indice Clustered por los primeros 3 campos
Anho+TipoMov+NroDOcu

Porque son los campos que enlazan con la cabecera de Facturas, y ademas
son los mas Rankeados en las consultas en otras pantallas:

Mi duda era Si de algo sirve meterlo en un nuevo Campo llamado TablaPK
las 3 columnas y ese campo sea el PrimayKey, si aplico eso tendria que
tener en la cabecera de factura el mismo tipo de campo y evitar crear un
Primary Key Agrupado. Ganaria algo con esa forma????

Mi tabla modificada seria asi:

Tabla: d_factura
dFactPK c(19) --> Anho+TipoMov+NroDocu --> Primary Key
Anho Char(4)
TipoMov C(3)
NroDocu c(12)
NroItem c(4)
fecha datetime
Codcli c(15)
etc...

gracias





Alejandro Mesa escribió:
Dany,

Nota:
Los Campos agrupar son tipo Char.


char 1, 2, 3 ???????????????

Por que clustered, piensas agrupar y ordenar por estas columnas, o acaso
usas algun filtro de rango por ellas?


AMB


"Dany Acosta" wrote:

Amigos,

Necesito crear un indice Principal por 3 Campos Agrupados en una Tabla
que se calcula una cantidad de registros aproximado de 8,000 por Año.

Cual seria una mejor forma y las mas optima de crear un Indice Principal
Agrupado:

Asi:
Campo1+Campo2+Campo3 > Indice Principal Agrupado
Valores:
A+B+C

o Asi:
Tener un Campo que sea el tamaño total de los 3 campos y almacene a indizar.

CampoPK --> Indice Principal
Valores:
ABC

CampoPk --> Es el contenido de los tres Campos. (A,B,C)


Nota:
Los Campos agrupar son tipo Char.

Gracias

Dany Acosta

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida