Help.. Busco ejemplo de particionar una tabla

12/10/2004 - 22:19 por Ayuda para particionar una Tabla... | Informe spam
Muchas gracias de antemano, debo particionar una tabla por varias partes de
acuerdo a entorno geografico, pero no se como se puede particionar una tabla,
y que esto sea transparente, que parezca que es la misma tabla, no lo se
hacer, es para mejorar el performance pues son muchisisimos registros si los
dejo en una sola tabla, ademas contiene varias imagenes cada registro. Por
favor ayudenme... Mil gracias por la ayuda. Saludos

Preguntas similare

Leer las respuestas

#1 Maxi
12/10/2004 - 22:29 | Informe spam
Hola, vayamos por partes dijo Jack ;-)

Primero antes que nada debes definir el criterio con que vas a partir la
tabla.
Luego generar las tablas correspondientes

Recien aca podes dividir los datos, esto lo podes hacer via insert de una
tabla a la otra y luego borrando (lo que se llama proceso de migracion)

Ahora bien, cuando esta partido, vas a tener que rearmar tus SP del CRUD.

Tambien para la parte de consulta podrias tener una vista.

Ahora un temita: si vas a partir las cosas lo ideal seria tenerlo en
distintos Filegroups y estos en distintos discos fisicos con una
controladora multicanal.

De esta forma vas a poder obtener una diferencia en el rendimiento, si todo
lo tenes junto la diferencia dudo que sea considerable y vas perder mas de
lo que ganaras!! recorda que partir las cosas las hace mucho mas dificiles
de mantener :(

Tambien seria bueno si pasas algunos datos como:

1) Tamaño de la BDD
2) Cantidad de registros de la tabla a partir
3) Un analisis de las consultas que se ponen lenta porque causa son, etc

Porque piensas que diviendo vas a obtener mayor performace? que estudio has
hecho?


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Ayuda para particionar una Tabla..." <Ayuda para particionar una
escribió en el mensaje
news:
Muchas gracias de antemano, debo particionar una tabla por varias partes


de
acuerdo a entorno geografico, pero no se como se puede particionar una


tabla,
y que esto sea transparente, que parezca que es la misma tabla, no lo se
hacer, es para mejorar el performance pues son muchisisimos registros si


los
dejo en una sola tabla, ademas contiene varias imagenes cada registro.


Por
favor ayudenme... Mil gracias por la ayuda. Saludos





Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.772 / Virus Database: 519 - Release Date: 01/10/2004
Respuesta Responder a este mensaje
#2 Guillermo Roldán
12/10/2004 - 23:00 | Informe spam
Por las horas que son, no puedo mirárlo más afondo, pero si yo fuera tú me
plantearía investigar lo siguiente:

1) Crear una tabla para cada "partición".
2) Eliminar (o renombrar) la antigua tabla, y crear una vista de unión de
todas las tablas.
3) Para permitir actualizaciones en la Vista, utilizar triggers del tipo
INSTEAD OF.

La ventaja de esto es poder plantearse la utilizanción de vistas
distribuidas. Es decir, tener distintos servidores SQL con sus datos
locales, y Vistas que "ven" todos los datos.

Espero que te pueda servir de algo, y siento no poder ser más exacto.

Saludos,

Guillermo Roldán
MCDBA, MCSE, MCSA
Madrid - Spain






"Ayuda para particionar una Tabla..." <Ayuda para particionar una
escribió en el mensaje
news:
Muchas gracias de antemano, debo particionar una tabla por varias partes


de
acuerdo a entorno geografico, pero no se como se puede particionar una


tabla,
y que esto sea transparente, que parezca que es la misma tabla, no lo se
hacer, es para mejorar el performance pues son muchisisimos registros si


los
dejo en una sola tabla, ademas contiene varias imagenes cada registro.


Por
favor ayudenme... Mil gracias por la ayuda. Saludos
Respuesta Responder a este mensaje
#3 Guillermo Roldan
13/10/2004 - 10:25 | Informe spam
Te anexo ejemplo de dos tablas y una vista particionada, por si te decantaras
por esta opción.

La principal utilidad de este método, está en disponer tablas en distintos
SQL Server. En cada SQL Server dispondrías como servidores vinculados al
resto de SQL servers del sistema. Así, en cada "delegación" se dispondría de
acceso local a sus datos, y remoto a los datos externos.

De cualquier modo, también funcionaría si todas las tablas están en el mismo
servidor SQL Server.

Saludos

Guillermo Roldán
MCDBA, MCSE, MCSA
Madrid - Spain


##################################################################################################
###
###
###
###
permitir actualizaciones. ###
###
###
##################################################################################################


IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID =
OBJECT_ID(N'[DBO].[TABLA_01]') AND OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1)
DROP TABLE [DBO].[TABLA_01]
GO

CREATE TABLE [DBO].[TABLA_01] (
[COD] [CHAR] (10) NOT NULL ,
[DESCRI] [VARCHAR] (50) NOT NULL ,
[PARTICION_ID] [CHAR] (2) NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [DBO].[TABLA_01] ADD
CONSTRAINT [PK_TABLA_01] PRIMARY KEY CLUSTERED
(
[COD]
) ON [PRIMARY] ,
CONSTRAINT [CK_TABLA_01] CHECK ([PARTICION_ID] = '01')
GO


IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID =
OBJECT_ID(N'[DBO].[TABLA_02]') AND OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1)
DROP TABLE [DBO].[TABLA_02]
GO

CREATE TABLE [DBO].[TABLA_02] (
[COD] [CHAR] (10) NOT NULL ,
[DESCRI] [VARCHAR] (50) NOT NULL ,
[PARTICION_ID] [CHAR] (2) NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [DBO].[TABLA_02] ADD
CONSTRAINT [PK_TABLA_02] PRIMARY KEY CLUSTERED
(
[COD]
) ON [PRIMARY] ,
CONSTRAINT [CK_TABLA_02] CHECK ([PARTICION_ID] = '02')
GO


IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID =
OBJECT_ID(N'[DBO].[VISTA_PARTICIONADA]') AND OBJECTPROPERTY(ID, N'ISVIEW') =
1)
DROP VIEW [DBO].[VISTA_PARTICIONADA]
GO

CREATE VIEW DBO.VISTA_PARTICIONADA
AS
SELECT * FROM TABLA_01
UNION
SELECT * FROM TABLA_02
GO


***********************************************************************************
errores ***
***********************************************************************************
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'PARTICION_UPDATE'
AND type = 'TR')
DROP TRIGGER PARTICION_UPDATE
GO


CREATE TRIGGER PARTICION_UPDATE
ON VISTA_PARTICIONADA
INSTEAD OF UPDATE
AS
DECLARE @PARTICION_ID CHAR(2)
SET @PARTICION_ID = (SELECT PARTICION_ID FROM Inserted)

IF @PARTICION_ID = '01'
BEGIN
UPDATE TABLA_01
SET TABLA_01.COD = Inserted.COD,
TABLA_01.DESCRI = Inserted.DESCRI
FROM TABLA_01 JOIN Inserted
ON TABLA_01.COD = Inserted.COD
END
ELSE
IF @PARTICION_ID = '02'
BEGIN
UPDATE TABLA_02
SET TABLA_02.COD = Inserted.COD,
TABLA_02.DESCRI = Inserted.DESCRI
FROM TABLA_02 JOIN Inserted
ON TABLA_02.COD = Inserted.COD
END
GO


***********************************************************************************
errores ***
***********************************************************************************
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'PARTICION_INSERT'
AND type = 'TR')
DROP TRIGGER PARTICION_INSERT
GO


CREATE TRIGGER PARTICION_INSERT
ON VISTA_PARTICIONADA
INSTEAD OF INSERT
AS
DECLARE @PARTICION_ID CHAR(2)
SET @PARTICION_ID = (SELECT PARTICION_ID FROM Inserted)

IF @PARTICION_ID = '01'
BEGIN
INSERT INTO TABLA_01 (COD, DESCRI, PARTICION_ID)
SELECT COD, DESCRI, PARTICION_ID
FROM Inserted
WHERE PARTICION_ID='01'
END
ELSE
IF @PARTICION_ID = '02'
BEGIN
INSERT INTO TABLA_02 (COD, DESCRI, PARTICION_ID)
SELECT COD, DESCRI, PARTICION_ID
FROM Inserted
WHERE PARTICION_ID='02'
END
GO


***********************************************************************************
errores ***
***********************************************************************************
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'PARTICION_DELETE'
AND type = 'TR')
DROP TRIGGER PARTICION_DELETE
GO


CREATE TRIGGER PARTICION_DELETE
ON VISTA_PARTICIONADA
INSTEAD OF DELETE
AS
DECLARE @PARTICION_ID CHAR(2)
SET @PARTICION_ID = (SELECT PARTICION_ID FROM Deleted)

IF @PARTICION_ID = '01'
BEGIN
DELETE FROM TABLA_01 WHERE COD IN
(
SELECT COD FROM Deleted
WHERE PARTICION_ID='01'
)
END
ELSE
IF @PARTICION_ID = '02'
BEGIN
DELETE FROM TABLA_02 WHERE COD IN
(
SELECT COD FROM Deleted
WHERE PARTICION_ID='02'
)
END
GO







"Ayuda para particionar una Tabla..." wrote:

Muchas gracias de antemano, debo particionar una tabla por varias partes de
acuerdo a entorno geografico, pero no se como se puede particionar una tabla,
y que esto sea transparente, que parezca que es la misma tabla, no lo se
hacer, es para mejorar el performance pues son muchisisimos registros si los
dejo en una sola tabla, ademas contiene varias imagenes cada registro. Por
favor ayudenme... Mil gracias por la ayuda. Saludos
Respuesta Responder a este mensaje
#4 Miguel Egea
16/10/2004 - 18:42 | Informe spam
Hola Guillermo no es necesario crear esos triggers si se crea la vista
particionada bien. Hay una serie de reglas pero son 'asumibles', os copio un
ejemplo.

create table TestParticionporregiones
(id int not null ,
RegionId tinyint not null check (RegionId < 2) ,
importe money,
constraint pk_TPR1 primary key (id,RegionId))
go
create table TestParticionporregiones2
(id int not null ,
RegionId tinyint not null check (RegionId >=2 and RegionId<5),
importe money,
constraint pk_TPR2 primary key (id,RegionId))
go
create table TestParticionporregiones3
(id int not null ,
RegionId tinyint not null check (RegionId >=5),
importe money,
constraint pk_TPR3 primary key (id,RegionId))
go

create view TestParticion as
select * from TestParticionporregiones
union all
select * from TestParticionporregiones2
union all
select * from TestParticionporregiones3
go
insert into Testparticion (id,regionId,Importe) values(101,1,200)
insert into Testparticion (id,regionId,Importe) values(101,3,200)
insert into Testparticion (id,regionId,Importe) values(101,9,200)
go
select * from testparticion
go
select * from TestParticionporregiones3

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

"Guillermo Roldan" <Guillermo escribió en
el mensaje news:
Te anexo ejemplo de dos tablas y una vista particionada, por si te
decantaras
por esta opción.

La principal utilidad de este método, está en disponer tablas en distintos
SQL Server. En cada SQL Server dispondrías como servidores vinculados al
resto de SQL servers del sistema. Así, en cada "delegación" se dispondría
de
acceso local a sus datos, y remoto a los datos externos.

De cualquier modo, también funcionaría si todas las tablas están en el
mismo
servidor SQL Server.

Saludos

Guillermo Roldán
MCDBA, MCSE, MCSA
Madrid - Spain


##################################################################################################
###
###
Constraint.
###
###
permitir actualizaciones. ###
###
###
##################################################################################################


IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID > OBJECT_ID(N'[DBO].[TABLA_01]') AND OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1)
DROP TABLE [DBO].[TABLA_01]
GO

CREATE TABLE [DBO].[TABLA_01] (
[COD] [CHAR] (10) NOT NULL ,
[DESCRI] [VARCHAR] (50) NOT NULL ,
[PARTICION_ID] [CHAR] (2) NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [DBO].[TABLA_01] ADD
CONSTRAINT [PK_TABLA_01] PRIMARY KEY CLUSTERED
(
[COD]
) ON [PRIMARY] ,
CONSTRAINT [CK_TABLA_01] CHECK ([PARTICION_ID] = '01')
GO


IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID > OBJECT_ID(N'[DBO].[TABLA_02]') AND OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1)
DROP TABLE [DBO].[TABLA_02]
GO

CREATE TABLE [DBO].[TABLA_02] (
[COD] [CHAR] (10) NOT NULL ,
[DESCRI] [VARCHAR] (50) NOT NULL ,
[PARTICION_ID] [CHAR] (2) NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [DBO].[TABLA_02] ADD
CONSTRAINT [PK_TABLA_02] PRIMARY KEY CLUSTERED
(
[COD]
) ON [PRIMARY] ,
CONSTRAINT [CK_TABLA_02] CHECK ([PARTICION_ID] = '02')
GO


IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID > OBJECT_ID(N'[DBO].[VISTA_PARTICIONADA]') AND OBJECTPROPERTY(ID, N'ISVIEW')
> 1)
DROP VIEW [DBO].[VISTA_PARTICIONADA]
GO

CREATE VIEW DBO.VISTA_PARTICIONADA
AS
SELECT * FROM TABLA_01
UNION
SELECT * FROM TABLA_02
GO


***********************************************************************************
errores ***
***********************************************************************************
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'PARTICION_UPDATE'
AND type = 'TR')
DROP TRIGGER PARTICION_UPDATE
GO


CREATE TRIGGER PARTICION_UPDATE
ON VISTA_PARTICIONADA
INSTEAD OF UPDATE
AS
DECLARE @PARTICION_ID CHAR(2)
SET @PARTICION_ID = (SELECT PARTICION_ID FROM Inserted)

IF @PARTICION_ID = '01'
BEGIN
UPDATE TABLA_01
SET TABLA_01.COD = Inserted.COD,
TABLA_01.DESCRI = Inserted.DESCRI
FROM TABLA_01 JOIN Inserted
ON TABLA_01.COD = Inserted.COD
END
ELSE
IF @PARTICION_ID = '02'
BEGIN
UPDATE TABLA_02
SET TABLA_02.COD = Inserted.COD,
TABLA_02.DESCRI = Inserted.DESCRI
FROM TABLA_02 JOIN Inserted
ON TABLA_02.COD = Inserted.COD
END
GO


***********************************************************************************
errores ***
***********************************************************************************
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'PARTICION_INSERT'
AND type = 'TR')
DROP TRIGGER PARTICION_INSERT
GO


CREATE TRIGGER PARTICION_INSERT
ON VISTA_PARTICIONADA
INSTEAD OF INSERT
AS
DECLARE @PARTICION_ID CHAR(2)
SET @PARTICION_ID = (SELECT PARTICION_ID FROM Inserted)

IF @PARTICION_ID = '01'
BEGIN
INSERT INTO TABLA_01 (COD, DESCRI, PARTICION_ID)
SELECT COD, DESCRI, PARTICION_ID
FROM Inserted
WHERE PARTICION_ID='01'
END
ELSE
IF @PARTICION_ID = '02'
BEGIN
INSERT INTO TABLA_02 (COD, DESCRI, PARTICION_ID)
SELECT COD, DESCRI, PARTICION_ID
FROM Inserted
WHERE PARTICION_ID='02'
END
GO


***********************************************************************************
errores ***
***********************************************************************************
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'PARTICION_DELETE'
AND type = 'TR')
DROP TRIGGER PARTICION_DELETE
GO


CREATE TRIGGER PARTICION_DELETE
ON VISTA_PARTICIONADA
INSTEAD OF DELETE
AS
DECLARE @PARTICION_ID CHAR(2)
SET @PARTICION_ID = (SELECT PARTICION_ID FROM Deleted)

IF @PARTICION_ID = '01'
BEGIN
DELETE FROM TABLA_01 WHERE COD IN
(
SELECT COD FROM Deleted
WHERE PARTICION_ID='01'
)
END
ELSE
IF @PARTICION_ID = '02'
BEGIN
DELETE FROM TABLA_02 WHERE COD IN
(
SELECT COD FROM Deleted
WHERE PARTICION_ID='02'
)
END
GO







"Ayuda para particionar una Tabla..." wrote:

Muchas gracias de antemano, debo particionar una tabla por varias partes
de
acuerdo a entorno geografico, pero no se como se puede particionar una
tabla,
y que esto sea transparente, que parezca que es la misma tabla, no lo se
hacer, es para mejorar el performance pues son muchisisimos registros si
los
dejo en una sola tabla, ademas contiene varias imagenes cada registro.
Por
favor ayudenme... Mil gracias por la ayuda. Saludos
Respuesta Responder a este mensaje
#5 Guillermo Roldán
17/10/2004 - 23:25 | Informe spam
Hola Miguel,

Mil gracias por tu ejemplo.

No sólo no hace falta utilizar triggers, sino que además funcionan las
inserciones masivas y resulta mucho más sencillo !!

Saludos,
Guillermo



"Miguel Egea" escribió en el mensaje
news:
Hola Guillermo no es necesario crear esos triggers si se crea la vista
particionada bien. Hay una serie de reglas pero son 'asumibles', os copio


un
ejemplo.

create table TestParticionporregiones
(id int not null ,
RegionId tinyint not null check (RegionId < 2) ,
importe money,
constraint pk_TPR1 primary key (id,RegionId))
go
create table TestParticionporregiones2
(id int not null ,
RegionId tinyint not null check (RegionId >=2 and RegionId<5),
importe money,
constraint pk_TPR2 primary key (id,RegionId))
go
create table TestParticionporregiones3
(id int not null ,
RegionId tinyint not null check (RegionId >=5),
importe money,
constraint pk_TPR3 primary key (id,RegionId))
go

create view TestParticion as
select * from TestParticionporregiones
union all
select * from TestParticionporregiones2
union all
select * from TestParticionporregiones3
go
insert into Testparticion (id,regionId,Importe) values(101,1,200)
insert into Testparticion (id,regionId,Importe) values(101,3,200)
insert into Testparticion (id,regionId,Importe) values(101,9,200)
go
select * from testparticion
go
select * from TestParticionporregiones3

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

"Guillermo Roldan" <Guillermo escribió


en
el mensaje news:
> Te anexo ejemplo de dos tablas y una vista particionada, por si te
> decantaras
> por esta opción.
>
> La principal utilidad de este método, está en disponer tablas en


distintos
> SQL Server. En cada SQL Server dispondrías como servidores vinculados al
> resto de SQL servers del sistema. Así, en cada "delegación" se


dispondría
> de
> acceso local a sus datos, y remoto a los datos externos.
>
> De cualquier modo, también funcionaría si todas las tablas están en el
> mismo
> servidor SQL Server.
>
> Saludos
>
> Guillermo Roldán
> MCDBA, MCSE, MCSA
> Madrid - Spain
>
>
>


############################################################################
######################
> ###
> ###
> Constraint.
> ###
> ###
> permitir actualizaciones. ###
> ###
> ###
>


############################################################################
######################
>
>
> IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID > > OBJECT_ID(N'[DBO].[TABLA_01]') AND OBJECTPROPERTY(ID, N'ISUSERTABLE') 1)
> DROP TABLE [DBO].[TABLA_01]
> GO
>
> CREATE TABLE [DBO].[TABLA_01] (
> [COD] [CHAR] (10) NOT NULL ,
> [DESCRI] [VARCHAR] (50) NOT NULL ,
> [PARTICION_ID] [CHAR] (2) NOT NULL
> ) ON [PRIMARY]
> GO
>
> ALTER TABLE [DBO].[TABLA_01] ADD
> CONSTRAINT [PK_TABLA_01] PRIMARY KEY CLUSTERED
> (
> [COD]
> ) ON [PRIMARY] ,
> CONSTRAINT [CK_TABLA_01] CHECK ([PARTICION_ID] = '01')
> GO
>
>
> IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID > > OBJECT_ID(N'[DBO].[TABLA_02]') AND OBJECTPROPERTY(ID, N'ISUSERTABLE') 1)
> DROP TABLE [DBO].[TABLA_02]
> GO
>
> CREATE TABLE [DBO].[TABLA_02] (
> [COD] [CHAR] (10) NOT NULL ,
> [DESCRI] [VARCHAR] (50) NOT NULL ,
> [PARTICION_ID] [CHAR] (2) NOT NULL
> ) ON [PRIMARY]
> GO
>
> ALTER TABLE [DBO].[TABLA_02] ADD
> CONSTRAINT [PK_TABLA_02] PRIMARY KEY CLUSTERED
> (
> [COD]
> ) ON [PRIMARY] ,
> CONSTRAINT [CK_TABLA_02] CHECK ([PARTICION_ID] = '02')
> GO
>
>
> IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID > > OBJECT_ID(N'[DBO].[VISTA_PARTICIONADA]') AND OBJECTPROPERTY(ID,


N'ISVIEW')
> > > 1)
> DROP VIEW [DBO].[VISTA_PARTICIONADA]
> GO
>
> CREATE VIEW DBO.VISTA_PARTICIONADA
> AS
> SELECT * FROM TABLA_01
> UNION
> SELECT * FROM TABLA_02
> GO
>
>
>


****************************************************************************
*******
sin
> errores ***
>


****************************************************************************
*******
> IF EXISTS (SELECT name FROM sysobjects WHERE name N'PARTICION_UPDATE'
> AND type = 'TR')
> DROP TRIGGER PARTICION_UPDATE
> GO
>
>
> CREATE TRIGGER PARTICION_UPDATE
> ON VISTA_PARTICIONADA
> INSTEAD OF UPDATE
> AS
> DECLARE @PARTICION_ID CHAR(2)
> SET @PARTICION_ID = (SELECT PARTICION_ID FROM Inserted)
>
> IF @PARTICION_ID = '01'
> BEGIN
> UPDATE TABLA_01
> SET TABLA_01.COD = Inserted.COD,
> TABLA_01.DESCRI = Inserted.DESCRI
> FROM TABLA_01 JOIN Inserted
> ON TABLA_01.COD = Inserted.COD
> END
> ELSE
> IF @PARTICION_ID = '02'
> BEGIN
> UPDATE TABLA_02
> SET TABLA_02.COD = Inserted.COD,
> TABLA_02.DESCRI = Inserted.DESCRI
> FROM TABLA_02 JOIN Inserted
> ON TABLA_02.COD = Inserted.COD
> END
> GO
>
>
>


****************************************************************************
*******
sin
> errores ***
>


****************************************************************************
*******
> IF EXISTS (SELECT name FROM sysobjects WHERE name N'PARTICION_INSERT'
> AND type = 'TR')
> DROP TRIGGER PARTICION_INSERT
> GO
>
>
> CREATE TRIGGER PARTICION_INSERT
> ON VISTA_PARTICIONADA
> INSTEAD OF INSERT
> AS
> DECLARE @PARTICION_ID CHAR(2)
> SET @PARTICION_ID = (SELECT PARTICION_ID FROM Inserted)
>
> IF @PARTICION_ID = '01'
> BEGIN
> INSERT INTO TABLA_01 (COD, DESCRI, PARTICION_ID)
> SELECT COD, DESCRI, PARTICION_ID
> FROM Inserted
> WHERE PARTICION_ID='01'
> END
> ELSE
> IF @PARTICION_ID = '02'
> BEGIN
> INSERT INTO TABLA_02 (COD, DESCRI, PARTICION_ID)
> SELECT COD, DESCRI, PARTICION_ID
> FROM Inserted
> WHERE PARTICION_ID='02'
> END
> GO
>
>
>


****************************************************************************
*******
sin
> errores ***
>


****************************************************************************
*******
> IF EXISTS (SELECT name FROM sysobjects WHERE name N'PARTICION_DELETE'
> AND type = 'TR')
> DROP TRIGGER PARTICION_DELETE
> GO
>
>
> CREATE TRIGGER PARTICION_DELETE
> ON VISTA_PARTICIONADA
> INSTEAD OF DELETE
> AS
> DECLARE @PARTICION_ID CHAR(2)
> SET @PARTICION_ID = (SELECT PARTICION_ID FROM Deleted)
>
> IF @PARTICION_ID = '01'
> BEGIN
> DELETE FROM TABLA_01 WHERE COD IN
> (
> SELECT COD FROM Deleted
> WHERE PARTICION_ID='01'
> )
> END
> ELSE
> IF @PARTICION_ID = '02'
> BEGIN
> DELETE FROM TABLA_02 WHERE COD IN
> (
> SELECT COD FROM Deleted
> WHERE PARTICION_ID='02'
> )
> END
> GO
>
>
>
>
>
>
>
> "Ayuda para particionar una Tabla..." wrote:
>
>> Muchas gracias de antemano, debo particionar una tabla por varias


partes
>> de
>> acuerdo a entorno geografico, pero no se como se puede particionar una
>> tabla,
>> y que esto sea transparente, que parezca que es la misma tabla, no lo


se
>> hacer, es para mejorar el performance pues son muchisisimos registros


si
>> los
>> dejo en una sola tabla, ademas contiene varias imagenes cada registro.
>> Por
>> favor ayudenme... Mil gracias por la ayuda. Saludos


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