Indice 'unique'

10/08/2005 - 19:26 por Pao | Informe spam
Hola tengo cierta duda de rendimiento, Tengo que recrear un indice pero tengo
cierta duda.
La tabla tiene 1400000row y tiene el sgte indice, segun el sp_help:

PK_HISTORICO_STATUS
nonclustered, unique,
primary key located on PRIMARY

TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
FECHA_HORA_PROBLEMA(-)


constraint_type

constraint_name
delete_action
update_action status_enabled status_for_replication constraint_keys



PRIMARY KEY (non-clustered)

PK_HISTORICO_STATUS
(n/a) (n/a)
(n/a) (n/a) TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
FECHA_HORA_PROBLEMA(-)


y se lo quiere poner de esta forma ahora:

use ATMHIS_BOLIVARIANO
go
alter table atmhis_bolivariano..HISTORICO_STATUS
DROP CONSTRAINT PK_HISTORICO_STATUS
go

create nonclustered index PK_HISTORICO_STATUS on
atmhis_bolivariano..HISTORICO_STATUS (TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
FECHA_HORA_PROBLEMA)
go
==Basicamente ahora ya no guardará unicidad esto me afecta a las consultas o
insert o que puede afectar, gracias.
Adicionalmente como hago para monitorear el estatus de un tabla en particular.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
10/08/2005 - 20:00 | Informe spam
Pao,

Basicamente ahora ya no guardará unicidad esto me afecta a las consultas o
insert o que puede afectar, gracias.



Eso no es posible, puesto que una clave primaria, por definicion, debe ser
unica. Ese indice debe haber sido creado por la restricion de clave primaria
y no de forma manual. Para que una tabla (hijo) pueda referencia a otra
(padre), la tabla padre debe tener o una restriccion de clave primaria o un
indice unico (unique) por las columnas que toman participacion en la relacion.


AMB

"Pao" wrote:

Hola tengo cierta duda de rendimiento, Tengo que recrear un indice pero tengo
cierta duda.
La tabla tiene 1400000row y tiene el sgte indice, segun el sp_help:

PK_HISTORICO_STATUS
nonclustered, unique,
primary key located on PRIMARY

TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
FECHA_HORA_PROBLEMA(-)


constraint_type

constraint_name
delete_action
update_action status_enabled status_for_replication constraint_keys



PRIMARY KEY (non-clustered)

PK_HISTORICO_STATUS
(n/a) (n/a)
(n/a) (n/a) TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
FECHA_HORA_PROBLEMA(-)


y se lo quiere poner de esta forma ahora:

use ATMHIS_BOLIVARIANO
go
alter table atmhis_bolivariano..HISTORICO_STATUS
DROP CONSTRAINT PK_HISTORICO_STATUS
go

create nonclustered index PK_HISTORICO_STATUS on
atmhis_bolivariano..HISTORICO_STATUS (TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
FECHA_HORA_PROBLEMA)
go
==> Basicamente ahora ya no guardará unicidad esto me afecta a las consultas o
insert o que puede afectar, gracias.
Adicionalmente como hago para monitorear el estatus de un tabla en particular.
Respuesta Responder a este mensaje
#2 Pao
10/08/2005 - 20:17 | Informe spam
Eso, si pero por otras razones se necesita cambiar para que no sea única. y
está no está relacionada con ninguna otra tabla, sin embargo necesito hacer
el cambio pero quiero saber lo que consulté respecto al rendimiento.

"Alejandro Mesa" wrote:

Pao,

> Basicamente ahora ya no guardará unicidad esto me afecta a las consultas o
> insert o que puede afectar, gracias.

Eso no es posible, puesto que una clave primaria, por definicion, debe ser
unica. Ese indice debe haber sido creado por la restricion de clave primaria
y no de forma manual. Para que una tabla (hijo) pueda referencia a otra
(padre), la tabla padre debe tener o una restriccion de clave primaria o un
indice unico (unique) por las columnas que toman participacion en la relacion.


AMB

"Pao" wrote:

> Hola tengo cierta duda de rendimiento, Tengo que recrear un indice pero tengo
> cierta duda.
> La tabla tiene 1400000row y tiene el sgte indice, segun el sp_help:
>
> PK_HISTORICO_STATUS
> nonclustered, unique,
> primary key located on PRIMARY
>
> TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
> FECHA_HORA_PROBLEMA(-)
>
>
> constraint_type
>
> constraint_name
> delete_action
> update_action status_enabled status_for_replication constraint_keys
>
>
>
> PRIMARY KEY (non-clustered)
>
> PK_HISTORICO_STATUS
> (n/a) (n/a)
> (n/a) (n/a) TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
> FECHA_HORA_PROBLEMA(-)
>
>
> y se lo quiere poner de esta forma ahora:
>
> use ATMHIS_BOLIVARIANO
> go
> alter table atmhis_bolivariano..HISTORICO_STATUS
> DROP CONSTRAINT PK_HISTORICO_STATUS
> go
>
> create nonclustered index PK_HISTORICO_STATUS on
> atmhis_bolivariano..HISTORICO_STATUS (TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
> FECHA_HORA_PROBLEMA)
> go
> ==> > Basicamente ahora ya no guardará unicidad esto me afecta a las consultas o
> insert o que puede afectar, gracias.
> Adicionalmente como hago para monitorear el estatus de un tabla en particular.
Respuesta Responder a este mensaje
#3 Alejandro Mesa
10/08/2005 - 20:33 | Informe spam
Pao,

Creo que no me comprendistes. Ese indice esta asociado a una restriccion de
clave primaria y por lo tanto no puedes cambiarlo sin antes eliminar la
restriccion.

Ejemplo:

create table t1 (
c1 int not null,
constraint pk_t1 primary key nonclustered (c1 asc)
)
go

exec sp_helpindex t1
go

create nonclustered index pk_t1 on t1(c1 asc)
with drop_existing
go

drop table t1
go

Si necesitas este indice pero requieres valores duplicados por estas
columnas, entonces debes eliminar la restriccion de clave primaria y crear un
nuevo indice nonclustered. No uses PK_ en el nombre del indice, casi siempre
se utiliza para indices asociados a la clave primaria.


AMB

"Pao" wrote:

Eso, si pero por otras razones se necesita cambiar para que no sea única. y
está no está relacionada con ninguna otra tabla, sin embargo necesito hacer
el cambio pero quiero saber lo que consulté respecto al rendimiento.

"Alejandro Mesa" wrote:

> Pao,
>
> > Basicamente ahora ya no guardará unicidad esto me afecta a las consultas o
> > insert o que puede afectar, gracias.
>
> Eso no es posible, puesto que una clave primaria, por definicion, debe ser
> unica. Ese indice debe haber sido creado por la restricion de clave primaria
> y no de forma manual. Para que una tabla (hijo) pueda referencia a otra
> (padre), la tabla padre debe tener o una restriccion de clave primaria o un
> indice unico (unique) por las columnas que toman participacion en la relacion.
>
>
> AMB
>
> "Pao" wrote:
>
> > Hola tengo cierta duda de rendimiento, Tengo que recrear un indice pero tengo
> > cierta duda.
> > La tabla tiene 1400000row y tiene el sgte indice, segun el sp_help:
> >
> > PK_HISTORICO_STATUS
> > nonclustered, unique,
> > primary key located on PRIMARY
> >
> > TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
> > FECHA_HORA_PROBLEMA(-)
> >
> >
> > constraint_type
> >
> > constraint_name
> > delete_action
> > update_action status_enabled status_for_replication constraint_keys
> >
> >
> >
> > PRIMARY KEY (non-clustered)
> >
> > PK_HISTORICO_STATUS
> > (n/a) (n/a)
> > (n/a) (n/a) TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
> > FECHA_HORA_PROBLEMA(-)
> >
> >
> > y se lo quiere poner de esta forma ahora:
> >
> > use ATMHIS_BOLIVARIANO
> > go
> > alter table atmhis_bolivariano..HISTORICO_STATUS
> > DROP CONSTRAINT PK_HISTORICO_STATUS
> > go
> >
> > create nonclustered index PK_HISTORICO_STATUS on
> > atmhis_bolivariano..HISTORICO_STATUS (TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
> > FECHA_HORA_PROBLEMA)
> > go
> > ==> > > Basicamente ahora ya no guardará unicidad esto me afecta a las consultas o
> > insert o que puede afectar, gracias.
> > Adicionalmente como hago para monitorear el estatus de un tabla en particular.
Respuesta Responder a este mensaje
#4 Pao
11/08/2005 - 00:37 | Informe spam
Si se lo considero por eso el script tiene esto fijate: se hace el alter
donde se dropea el constraint, lo que no sabía es que puedes hacer como un
alter en el mismo momento que creas el indice: with drop_existing

Pero por fis aún no me confirmas lo del rendimiento de esto.

use ATMHIS_BOLIVARIANO
go
alter table atmhis_bolivariano..HISTORICO_STATUS
DROP CONSTRAINT PK_HISTORICO_STATUS
go

create nonclustered index PK_HISTORICO_STATUS on
atmhis_bolivariano..HISTORICO_STATUS (TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
FECHA_HORA_PROBLEMA)
go



"Alejandro Mesa" wrote:

Pao,

Creo que no me comprendistes. Ese indice esta asociado a una restriccion de
clave primaria y por lo tanto no puedes cambiarlo sin antes eliminar la
restriccion.

Ejemplo:

create table t1 (
c1 int not null,
constraint pk_t1 primary key nonclustered (c1 asc)
)
go

exec sp_helpindex t1
go

create nonclustered index pk_t1 on t1(c1 asc)
with drop_existing
go

drop table t1
go

Si necesitas este indice pero requieres valores duplicados por estas
columnas, entonces debes eliminar la restriccion de clave primaria y crear un
nuevo indice nonclustered. No uses PK_ en el nombre del indice, casi siempre
se utiliza para indices asociados a la clave primaria.


AMB

"Pao" wrote:

> Eso, si pero por otras razones se necesita cambiar para que no sea única. y
> está no está relacionada con ninguna otra tabla, sin embargo necesito hacer
> el cambio pero quiero saber lo que consulté respecto al rendimiento.
>
> "Alejandro Mesa" wrote:
>
> > Pao,
> >
> > > Basicamente ahora ya no guardará unicidad esto me afecta a las consultas o
> > > insert o que puede afectar, gracias.
> >
> > Eso no es posible, puesto que una clave primaria, por definicion, debe ser
> > unica. Ese indice debe haber sido creado por la restricion de clave primaria
> > y no de forma manual. Para que una tabla (hijo) pueda referencia a otra
> > (padre), la tabla padre debe tener o una restriccion de clave primaria o un
> > indice unico (unique) por las columnas que toman participacion en la relacion.
> >
> >
> > AMB
> >
> > "Pao" wrote:
> >
> > > Hola tengo cierta duda de rendimiento, Tengo que recrear un indice pero tengo
> > > cierta duda.
> > > La tabla tiene 1400000row y tiene el sgte indice, segun el sp_help:
> > >
> > > PK_HISTORICO_STATUS
> > > nonclustered, unique,
> > > primary key located on PRIMARY
> > >
> > > TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
> > > FECHA_HORA_PROBLEMA(-)
> > >
> > >
> > > constraint_type
> > >
> > > constraint_name
> > > delete_action
> > > update_action status_enabled status_for_replication constraint_keys
> > >
> > >
> > >
> > > PRIMARY KEY (non-clustered)
> > >
> > > PK_HISTORICO_STATUS
> > > (n/a) (n/a)
> > > (n/a) (n/a) TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
> > > FECHA_HORA_PROBLEMA(-)
> > >
> > >
> > > y se lo quiere poner de esta forma ahora:
> > >
> > > use ATMHIS_BOLIVARIANO
> > > go
> > > alter table atmhis_bolivariano..HISTORICO_STATUS
> > > DROP CONSTRAINT PK_HISTORICO_STATUS
> > > go
> > >
> > > create nonclustered index PK_HISTORICO_STATUS on
> > > atmhis_bolivariano..HISTORICO_STATUS (TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
> > > FECHA_HORA_PROBLEMA)
> > > go
> > > ==> > > > Basicamente ahora ya no guardará unicidad esto me afecta a las consultas o
> > > insert o que puede afectar, gracias.
> > > Adicionalmente como hago para monitorear el estatus de un tabla en particular.
Respuesta Responder a este mensaje
#5 Alejandro Mesa
11/08/2005 - 18:36 | Informe spam
Pero por fis aún no me confirmas lo del rendimiento de esto.



Mientras mas mayor sea la selectividad de un indice (menos valores
duplicados por llave) mejor sera su uso por parte de sql server. Si antes el
indice era unique y ahora en cambio permite duplicados, si la selectividad o
numero de duplicados de ciertos valores no es la adecuada, sql server no hara
uso del indice.


AMB


"Pao" wrote:

Si se lo considero por eso el script tiene esto fijate: se hace el alter
donde se dropea el constraint, lo que no sabía es que puedes hacer como un
alter en el mismo momento que creas el indice: with drop_existing

Pero por fis aún no me confirmas lo del rendimiento de esto.

use ATMHIS_BOLIVARIANO
go
alter table atmhis_bolivariano..HISTORICO_STATUS
DROP CONSTRAINT PK_HISTORICO_STATUS
go

create nonclustered index PK_HISTORICO_STATUS on
atmhis_bolivariano..HISTORICO_STATUS (TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
FECHA_HORA_PROBLEMA)
go



"Alejandro Mesa" wrote:

> Pao,
>
> Creo que no me comprendistes. Ese indice esta asociado a una restriccion de
> clave primaria y por lo tanto no puedes cambiarlo sin antes eliminar la
> restriccion.
>
> Ejemplo:
>
> create table t1 (
> c1 int not null,
> constraint pk_t1 primary key nonclustered (c1 asc)
> )
> go
>
> exec sp_helpindex t1
> go
>
> create nonclustered index pk_t1 on t1(c1 asc)
> with drop_existing
> go
>
> drop table t1
> go
>
> Si necesitas este indice pero requieres valores duplicados por estas
> columnas, entonces debes eliminar la restriccion de clave primaria y crear un
> nuevo indice nonclustered. No uses PK_ en el nombre del indice, casi siempre
> se utiliza para indices asociados a la clave primaria.
>
>
> AMB
>
> "Pao" wrote:
>
> > Eso, si pero por otras razones se necesita cambiar para que no sea única. y
> > está no está relacionada con ninguna otra tabla, sin embargo necesito hacer
> > el cambio pero quiero saber lo que consulté respecto al rendimiento.
> >
> > "Alejandro Mesa" wrote:
> >
> > > Pao,
> > >
> > > > Basicamente ahora ya no guardará unicidad esto me afecta a las consultas o
> > > > insert o que puede afectar, gracias.
> > >
> > > Eso no es posible, puesto que una clave primaria, por definicion, debe ser
> > > unica. Ese indice debe haber sido creado por la restricion de clave primaria
> > > y no de forma manual. Para que una tabla (hijo) pueda referencia a otra
> > > (padre), la tabla padre debe tener o una restriccion de clave primaria o un
> > > indice unico (unique) por las columnas que toman participacion en la relacion.
> > >
> > >
> > > AMB
> > >
> > > "Pao" wrote:
> > >
> > > > Hola tengo cierta duda de rendimiento, Tengo que recrear un indice pero tengo
> > > > cierta duda.
> > > > La tabla tiene 1400000row y tiene el sgte indice, segun el sp_help:
> > > >
> > > > PK_HISTORICO_STATUS
> > > > nonclustered, unique,
> > > > primary key located on PRIMARY
> > > >
> > > > TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
> > > > FECHA_HORA_PROBLEMA(-)
> > > >
> > > >
> > > > constraint_type
> > > >
> > > > constraint_name
> > > > delete_action
> > > > update_action status_enabled status_for_replication constraint_keys
> > > >
> > > >
> > > >
> > > > PRIMARY KEY (non-clustered)
> > > >
> > > > PK_HISTORICO_STATUS
> > > > (n/a) (n/a)
> > > > (n/a) (n/a) TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
> > > > FECHA_HORA_PROBLEMA(-)
> > > >
> > > >
> > > > y se lo quiere poner de esta forma ahora:
> > > >
> > > > use ATMHIS_BOLIVARIANO
> > > > go
> > > > alter table atmhis_bolivariano..HISTORICO_STATUS
> > > > DROP CONSTRAINT PK_HISTORICO_STATUS
> > > > go
> > > >
> > > > create nonclustered index PK_HISTORICO_STATUS on
> > > > atmhis_bolivariano..HISTORICO_STATUS (TIPO_DE_TERMINAL, NUMERO_DE_TERMINAL,
> > > > FECHA_HORA_PROBLEMA)
> > > > go
> > > > ==> > > > > Basicamente ahora ya no guardará unicidad esto me afecta a las consultas o
> > > > insert o que puede afectar, gracias.
> > > > Adicionalmente como hago para monitorear el estatus de un tabla en particular.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida