Definición de Índices / Generar estos mediante script

Por 0 No tags Permalink

Los índices nos ayudan a que las búsquedas en la base de datos sean mucho mas rápidas. Los índices mal diseñados y la falta de índices constituyen las principales fuentes de atascos en aplicaciones de base de datos.

Cómo identificar las columnas a indexar.

Cuando crear un Índice

  1. Cuando la columna es clave externa.
  2. Cuando la columna se utiliza con frecuencia en condiciones de búsqueda o unión interna. Ejemplo «Where, Inner Join, Left Join, Outer Join»
  3. Cuando la columna contiene un gran número de valores distintos. Ejemplo «El campo de nombre de Cliente»
  4. Cuando la columna se actualiza poco a poco. Ejemplo «Columna de Saldo de Stock»

Cuándo reasignar el índice Clustered, este tipo de índice es único por tabla.

  1. Cuando la columna se utiliza en casi todas las condiciones de búsqueda.
  2. Cuando la columna contiene principalmente valores distintos.
  3. Cuando la columna es pequeña.
  4. Cuando los valores de la columna raramente, si alguna vez, cambian.
  5. Cuando la mayoría de las consultas en la columna devolverán grandes conjuntos de resultados
Script para generar la DBPruebas:
USE master
GO

-- SQL Server >= 2016
-- DROP DATABASE IF EXISTS BDPruebas

IF EXISTS(SELECT * FROM SYS.DATABASES WHERE NAME='BDPruebas')
BEGIN
     ALTER DATABASE BDPruebas SET SINGLE_USER WITH ROLLBACK IMMEDIATE
	 DROP DATABASE BDPruebas
END
GO

CREATE DATABASE BDPruebas ON PRIMARY
(NAME='BDPruebas',FILENAME='C:\DATA\BDPruebas.mdf',SIZE=1000MB,FILEGROWTH=0)
LOG ON
(NAME='BDPruebas_log',FILENAME='C:\DATA\BDPruebas_log.ldf',SIZE=10MB,
 MAXSIZE=2048GB,FILEGROWTH=50MB)
GO

USE BDPruebas
GO
CREATE TABLE Departamento(DepartamentoID TINYINT identity(1,1) ,
                             Departamento VARCHAR(60) NOT NULL UNIQUE   ,
							 CONSTRAINT [PK_Departamento_DepartamentoID] 
							 PRIMARY KEY NONCLUSTERED(DepartamentoID))
GO
/*Agregar la siguiente tablas Cargo,Periodo y Competencia,Evaluador */
CREATE TABLE Cargo(CargoID TINYINT identity(1,1) ,
                      Cargo VARCHAR(60) NOT NULL UNIQUE   ,
					  CONSTRAINT [PK_Cargo_CargoID] 
					  PRIMARY KEY NONCLUSTERED(CargoID))

GO
CREATE TABLE Periodo(PeriodoID TINYINT identity(1,1) ,
                        Periodo VARCHAR(60) NOT NULL UNIQUE   ,
						CONSTRAINT [PK_Periodo_PeriodoID] 
						PRIMARY KEY NONCLUSTERED(PeriodoID))
GO

CREATE TABLE Competencia(CompetenciaID TINYINT identity(1,1) ,
                            Competencia VARCHAR(60) NOT NULL UNIQUE   ,
						    CONSTRAINT [PK_Competencia_CompetenciaID] 
							PRIMARY KEY NONCLUSTERED(CompetenciaID))
GO
CREATE TABLE Evaluador(EvaluadorID TINYINT identity(1,1) ,
                          Evaluador VARCHAR(60) NOT NULL UNIQUE   ,
						  CONSTRAINT [PK_Evaluador_EvaluadorID] 
						  PRIMARY KEY NONCLUSTERED(EvaluadorID))

GO

CREATE TABLE Empleado(EmpleadoID smallint identity(1,1),
                         Empleado  VARCHAR(80) NOT NULL,
						 Sexo CHAR(1) NOT NULL CHECK(SEXO IN ('M','F')),
						 DepartamentoID TINYINT NOT  NULL,
						 CargoID TINYINT NOT NULL,
						 Nseguro CHAR(9) not null unique 
						                 check(Nseguro like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9]'),
						CONSTRAINT [PK_Empleado_EmpleadoID] PRIMARY KEY NONCLUSTERED (EmpleadoID),
						CONSTRAINT [FK_Empleado_DepartamentoID] FOREIGN KEY (DepartamentoID) REFERENCES Departamento (DepartamentoID),
						CONSTRAINT [FK_Empleado_CargoID] FOREIGN KEY (CargoID) REFERENCES Cargo (CargoID)
						)

GO
CREATE TABLE SubCompetencia(SubCompetenciaID TINYINT identity(1,1),
                               SubCompetencia  VARCHAR(150) NOT NULL,
							   CompetenciaID TINYINT NOT null,
							   CONSTRAINT [PK_SubCompetencia_SubCompetenciaID] PRIMARY KEY NONCLUSTERED (SubCompetenciaID),
							   CONSTRAINT [FK_SubCompetencia_CompetenciaID] FOREIGN KEY (CompetenciaID) REFERENCES Competencia (CompetenciaID),
							   )
GO

CREATE TABLE Evaluacion(EvaluacionID int identity(1,1),
                            Fecha date NOT NULL, 
							PeriodoID TINYINT NOT NULL,
							EmpleadoID smallint NOT NULL, 
							EvaluadorID TINYINT NOT NULL,
							Fortalezas VARCHAR(250),
							Oportunidades VARCHAR(250),
							Recomendaciones VARCHAR (250)
							CONSTRAINT [PK_Evaluacion_EvaluacionID]  PRIMARY KEY NONCLUSTERED (EvaluacionID),
							CONSTRAINT [FK_Evaluacion_PeriodoID]     FOREIGN KEY(PeriodoID)  REFERENCES  [Periodo]   (PeriodoID),
							CONSTRAINT [FK_Evaluacion_EmpleadoID]    FOREIGN KEY(EmpleadoID) REFERENCES  [Empleado]  (EmpleadoID),
							CONSTRAINT [FK_Evaluacion_IdEvaluado]    FOREIGN KEY(EmpleadoID) REFERENCES  [Empleado]  (EmpleadoID)
							
							 )
GO

CREATE TABLE EvaluacionDetalle(EvaluacionDetalleID int identity(1,1) , 
                                EvaluacionID INT , 
								SubCompetenciaID TINYINT, 
								Nota TINYINT NOT NULL CHECK (Nota>=0 AND Nota<=100),
								CONSTRAINT [PK_Evaluacion_Detalle_EvaluacionDetalleID]    PRIMARY KEY NONCLUSTERED (EvaluacionDetalleID),
								CONSTRAINT [FK_Evaluacion_Detalle_EvaluacionID]      FOREIGN KEY(EvaluacionID)      REFERENCES  [Evaluacion]      (EvaluacionID),
						        CONSTRAINT [FK_Evaluacion_Detalle_SubCompetenciaID]  FOREIGN KEY(SubCompetenciaID)  REFERENCES  [SubCompetencia]  (SubCompetenciaID)
								)

GO
ALTER TABLE Evaluacion ADD CONSTRAINT [FK_Evaluacion_EvaluadorID]  
FOREIGN KEY(EvaluadorID)  REFERENCES  [Evaluador]  (EvaluadorID)

Insertar valores a las tablas

USE [BDPruebas]
GO
SET IDENTITY_INSERT [dbo].[Departamento] ON 
GO
INSERT [dbo].[Departamento] ([DepartamentoID], [Departamento]) VALUES (1, N'DEPARTAMENTO 001')
GO
INSERT [dbo].[Departamento] ([DepartamentoID], [Departamento]) VALUES (2, N'DEPARTAMENTO 002')
GO
INSERT [dbo].[Departamento] ([DepartamentoID], [Departamento]) VALUES (3, N'DEPARTAMENTO 003')
GO
INSERT [dbo].[Departamento] ([DepartamentoID], [Departamento]) VALUES (4, N'DEPARTAMENTO 004')
GO
INSERT [dbo].[Departamento] ([DepartamentoID], [Departamento]) VALUES (5, N'DEPARTAMENTO 005')
GO
INSERT [dbo].[Departamento] ([DepartamentoID], [Departamento]) VALUES (6, N'DEPARTAMENTO 006')
GO
INSERT [dbo].[Departamento] ([DepartamentoID], [Departamento]) VALUES (7, N'DEPARTAMENTO 007')
GO
INSERT [dbo].[Departamento] ([DepartamentoID], [Departamento]) VALUES (8, N'DEPARTAMENTO 008')
GO
SET IDENTITY_INSERT [dbo].[Departamento] OFF
GO
SET IDENTITY_INSERT [dbo].[Cargo] ON 
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (1, N'AUXILIAR DE CARNICERIA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (2, N'AUXILIAR DE COCINA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (3, N'AUXILIAR DE INVENTARIO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (4, N'CAJERA - DISPLAY')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (5, N'CAJERO - DISPLAY')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (6, N'CONSERJE')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (7, N'DISPLAY')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (8, N'RESPONSABLE DE CAJA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (9, N'RESPONSABLE DE PISO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (10, N'RESPONSABLE INVENTARIO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (11, N'RESPONSABLE NEGOCIO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (12, N'SUPERVISOR DE PISO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (13, N'VIGILANTE DE PARQUEO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (14, N'VIGILANTE DE PISO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (15, N'CONDUCTOR')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (16, N'RESPONSABLE DE RRHH')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (17, N'AUXILIAR DE RRHH')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (18, N'SUPERVISOR GENERAL')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (19, N'RESPONSABLE CONTABILIDAD')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (20, N'RESPONSABLE COMPRAS')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (21, N'GERENTE GENERAL')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (22, N'AUXILIAR DE COMPRAS')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (23, N'AUXILIAR CONTABILIDAD')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (24, N'RESPONSABLE INFORMATICA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (25, N'AUXILIAR INFORMATICA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (26, N'ASESOR GENERAL')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (27, N'ASESOR DE PISO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (28, N'SUPERVISOR PUNTOS DE VENTA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (29, N'VIGILANTE DE CAMARA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (30, N'RESPONSABLE OPERACIONES Y LOGISTICA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (31, N'RESPONSABLE CREDITO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (32, N'RESPONSABLE CHEQUEADOR')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (33, N'CHEQUEADOR')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (34, N'AUXILIAR RESPONSABLE CAJA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (35, N'PAQUETERIA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (36, N'RESPONSABLE MERCADEO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (37, N'AUXILIAR DE MERCADEO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (38, N'ASISTENTE DE GERENCIA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (39, N'AUXILIAR DE BODEGA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (40, N'SUPERVISOR DE PRECIOS')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (41, N'AUXILIAR DE VERDURA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (42, N'AUXILIAR DE SUPERVISION')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (43, N'RESPONSABLE DE CARNICERIA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (44, N'PROMOTORA VENTA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (45, N'RESPONSABLE DE COCINA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (46, N'RESPONSABLE DE BODEGA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (47, N'RESPONSABLE TALLER MECANICA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (48, N'AUXILIAR MECANICA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (49, N'OPERACIONES Y MANTENIMIENTO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (50, N'ENCARGADO DE TRANSPORTE')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (51, N'ENCARGADA DE VERDURA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (52, N'CAPACITADOR DE INVENTARIO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (53, N'VIGILANTE DE LA NOCHE')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (54, N'AUXILIAR RESPONSABLE DE CAJA')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (55, N'AUX. BODEGA LACTOSAN')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (56, N'RESPONSABLE DE EFECTIVO')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (57, N'RECEPCION')
GO
INSERT [dbo].[Cargo] ([CargoID], [Cargo]) VALUES (58, N'AUXILIAR LOGISTICA')
GO
SET IDENTITY_INSERT [dbo].[Cargo] OFF
GO
SET IDENTITY_INSERT [dbo].[Empleado] ON 
GO
INSERT [dbo].[Empleado] ([EmpleadoID], [Empleado],[Sexo], [DepartamentoID], [CargoID],[NSeguro]) VALUES (1, N'MATILDE JANET BERRIOS RIZO','F', 6, 38,'1234567-9')
GO
INSERT [dbo].[Empleado] ([EmpleadoID], [Empleado],[Sexo], [DepartamentoID], [CargoID],[NSeguro]) VALUES (2, N'RICARDO A HUAMAN SUAREZ','M', 7, 15,'1234569-5')
GO
INSERT [dbo].[Empleado] ([EmpleadoID], [Empleado],[Sexo], [DepartamentoID], [CargoID],[NSeguro]) VALUES (3, N'ALDO LADERAS PARRA','M', 1, 15,'1234566-5')
GO
INSERT [dbo].[Empleado] ([EmpleadoID], [Empleado],[Sexo], [DepartamentoID], [CargoID],[NSeguro]) VALUES (4, N'VICTOR MORENO MINAYA','M', 7, 46,'1234565-3')
GO
INSERT [dbo].[Empleado] ([EmpleadoID], [Empleado],[Sexo], [DepartamentoID], [CargoID],[NSeguro]) VALUES (5, N'JULIO LANDA','M', 7, 1,'1234563-3')
SET IDENTITY_INSERT [dbo].[Empleado] OFF
GO
SET IDENTITY_INSERT [dbo].[Competencia] ON 
GO
INSERT [dbo].[Competencia] ([CompetenciaID], [Competencia]) VALUES (1, N'COMUNICACION')
GO
INSERT [dbo].[Competencia] ([CompetenciaID], [Competencia]) VALUES (2, N'TRABAJO DE EQUIPO')
GO
INSERT [dbo].[Competencia] ([CompetenciaID], [Competencia]) VALUES (3, N'RESOLUCION DE INCIDENCIAS')
GO
INSERT [dbo].[Competencia] ([CompetenciaID], [Competencia]) VALUES (4, N'MEJORA CONTINUA')
GO
INSERT [dbo].[Competencia] ([CompetenciaID], [Competencia]) VALUES (5, N'ORGANIZACION Y ADMINISTRACION DEL TIEMPO')
GO
INSERT [dbo].[Competencia] ([CompetenciaID], [Competencia]) VALUES (6, N'ENFOQUE EN EL CLIENTE')
GO
INSERT [dbo].[Competencia] ([CompetenciaID], [Competencia]) VALUES (7, N'PENSAMIENTO ESTRATEGICO')
GO
INSERT [dbo].[Competencia] ([CompetenciaID], [Competencia]) VALUES (8, N'ENFOQUE A RESULTADOS')
GO
SET IDENTITY_INSERT [dbo].[Competencia] OFF
GO
SET IDENTITY_INSERT [dbo].[SubCompetencia] ON 
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (1, N'Comparte información de manera efectiva y asertiva. ', 1)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (2, N'Escucha activamente y es receptivo a las opiniones de los demás. ', 1)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (3, N'Presta atención en las conversaciones.', 1)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (4, N'Se comunica de manera escrita con claridad.', 1)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (5, N'Expresa sus ideas con claridad y respeto a la otra persona. ', 1)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (6, N'Fomenta el diálogo de manera abierta y directa. ', 1)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (7, N'Se desempeña como un miembro activo del equipo.', 2)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (8, N'Inspira, motiva y guía al equipo para el logro de las metas.', 2)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (9, N'Comparte su conocimiento, habilidades y experiencia.', 2)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (10, N'Comparte el reconocimiento de logros con el resto del equipo. ', 2)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (11, N'Recauda información de diferentes fuentes antes de tomar una decisión.', 3)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (12, N'Se enfoca en los asuntos clave para resolver el problema.', 3)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (13, N'Tiene flexibilidad y disposición de cambio ante las situaciones. ', 3)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (14, N'Considera las implicaciones antes de llevar a cabo una acción. ', 3)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (15, N'Conserva la calma en situaciones complicadas. ', 3)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (16, N'Se adapta a trabajar con nuevos procesos y tareas. ', 4)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (17, N'No muestra resistencia a las ideas de las demás personas.', 4)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (18, N'Busca activamente nuevas maneras de realizar las actividades.', 4)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (19, N'Se esfuerza por innovar y aportar ideas. ', 4)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (20, N'Busca reforzar sus habilidades y trabajar en sus áreas de oportunidad', 4)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (21, N'Es capaz de establecer prioridades en sus tareas laborales. ', 5)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (22, N'Completa de manera efectiva en tiempo y forma los proyectos asignados', 5)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (23, N'Utiliza eficientemente los recursos asignados para llevar a cabo sus actividades. ', 5)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (24, N'Establece y mantiene relación a largo plazo con los clientes al ganar su confianza.', 6)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (25, N'Procura la satisfacción del cliente al brindar un servicio de excelencia. ', 6)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (26, N'Busca nuevas maneras de brindar valor agregado a los clientes. ', 6)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (27, N'Entiende las necesidades del cliente y busca exceder sus expectativas. ', 6)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (28, N'Es percibido por el cliente como una persona confiable que representa a la empresa. ', 6)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (29, N'Comprende las implicaciones de sus decisiones en el negocio a corto y largo plazo.', 7)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (30, N'Determina objetivos y establece prioridades para lograrlos. ', 7)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (31, N'Tiene visión a largo plazo y busca oportunidades para llevar a la organización al crecimiento.', 7)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (32, N'Basa sus decisiones y acciones estratégicas en la misión, visión y valores de la organización.', 7)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (33, N'Reconoce y aprovecha las oportunidades. ', 8)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (34, N'Mantiene altos niveles de estándares de desempeño ', 8)
GO
INSERT [dbo].[SubCompetencia] ([SubCompetenciaID], [SubCompetencia], [CompetenciaID]) VALUES (35, N'Demuestra interés por el logro de metas individuales y organizacionales  con compromiso. ', 8)
GO
SET IDENTITY_INSERT [dbo].[SubCompetencia] OFF
GO
SET IDENTITY_INSERT [dbo].[Periodo] ON 
GO
INSERT [dbo].[Periodo] ([PeriodoID], [Periodo]) VALUES (1, N'MES')
GO
INSERT [dbo].[Periodo] ([PeriodoID], [Periodo]) VALUES (2, N'BIMENSUAL')
GO
INSERT [dbo].[Periodo] ([PeriodoID], [Periodo]) VALUES (3, N'TRIMESTRAL')
GO
INSERT [dbo].[Periodo] ([PeriodoID], [Periodo]) VALUES (4, N'SEMIANUAL')
GO
INSERT [dbo].[Periodo] ([PeriodoID], [Periodo]) VALUES (5, N'ANUAL')
GO
INSERT [dbo].[Periodo] ([PeriodoID], [Periodo]) VALUES (6, N'OTRO')
GO
SET IDENTITY_INSERT [dbo].[Periodo] OFF
GO

Script para Identificar claves Externas no Indexadas / Script para Generar Índice correspondiente de las claves externas no indexadas

WITH v_NonIndexedFKColumns AS (
   SELECT 
      Object_Name(a.parent_object_id) AS Table_Name
      ,b.NAME AS Column_Name
   FROM 
      sys.foreign_key_columns a
      ,sys.all_columns b
      ,sys.objects c
   WHERE 
      a.parent_column_id = b.column_id
      AND a.parent_object_id = b.object_id
      AND b.object_id = c.object_id
      AND c.is_ms_shipped = 0
   EXCEPT
   SELECT 
      Object_name(a.Object_id)
      ,b.NAME
   FROM 
      sys.index_columns a
      ,sys.all_columns b
      ,sys.objects c
   WHERE 
      a.object_id = b.object_id
      AND a.key_ordinal = 1
      AND a.column_id = b.column_id
      AND a.object_id = c.object_id 
      AND c.is_ms_shipped = 0
   )
SELECT  
   'CREATE NONCLUSTERED INDEX [IX_'+v.Table_Name+'_'+v.Column_Name+'] ON [dbo].['+ v.Table_Name+']  ( ' + v.Column_Name + ') 
    WITH ( FILLFACTOR = 80);' AS Indice ,
   'DROP INDEX [IX_'+v.Table_Name+'_'+v.Column_Name+'] ON [dbo].['+ v.Table_Name+'];' AS BorrarIndice ,
   v.Table_Name AS NonIndexedCol_Table_Name
   ,v.Column_Name AS NonIndexedCol_Column_Name             
   ,fk.NAME AS Constraint_Name   
   ,SCHEMA_NAME(fk.schema_id) AS Ref_Schema_Name       
   ,object_name(fkc.referenced_object_id) AS Ref_Table_Name      
   ,c2.NAME AS Ref_Column_Name         
FROM 
   v_NonIndexedFKColumns v
   ,sys.all_columns c
   ,sys.all_columns c2
   ,sys.foreign_key_columns fkc
   ,sys.foreign_keys fk
WHERE 
   v.Table_Name = Object_Name(fkc.parent_object_id)
   AND v.Column_Name = c.NAME
   AND fkc.parent_column_id = c.column_id
   AND fkc.parent_object_id = c.object_id
   AND fkc.referenced_column_id = c2.column_id
   AND fkc.referenced_object_id = c2.object_id
   AND fk.object_id = fkc.constraint_object_id
ORDER BY 1,2

Index ColumnStore vs Index RowStore ¿Cuándo usaremos índices de almacenamiento basado en columnas (Index ColumnStore) y cuándo usaremos índices de almacenamiento basado en filas (Index RowStore)?

Al pensar en esta pregunta, vemos que ambos índices pueden convivir en los mismo entornos. La diferencia es que los índices Column Store son más adecuados en tablas OLAP (On-Line Analytical Processing) y los índices RowStore son más adecuados para las tablas OLTP (On-Line Transactional Processing). Se usarán índices Clustered Column Store en tablas de hechos y tablas de grandes dimensiones de datos DataWarehouse. A su vez, podemos utilizar índices Non-Clustered ColumnStore junto con índices RowStore en entorno OLTP, este uso conjunto se denomina Real-Time Operational Analytics.

Un problema que podemos encontrar es un mayor número de bloqueos al tratar de realizar operaciones de INSERT, UPDATE o DELETE en las tablas con Clustered ColumnStore Index. De ahí que se deban usar dichos índices en entornos OLAP y no OLTP.

Normalmente, el resultado de las búsquedas a estas tablas son unas pocas filas, lo que reduce el número de Lecturas/Escrituras de los discos.

Para finalizar, comentaros que en entradas siguientes veremos las principales características de los índices ColumnStore, hablaremos de composición interna de los índices, velocidad, compresión, Real Time Operational Analytics..

En este ejemplo se crea una tabla y después se convierte en un índice clúster de almacén de columnas denominado cci_TablaCLUSTEREDCOLUMNSTORE. Esto cambia el almacenamiento de la tabla de un almacén de filas a un almacén de columnas.

CREATE TABLE TablaCLUSTEREDCOLUMNSTORE (  
    ProductosID [INT] NOT NULL,   
    FechaID [INT] NOT NULL,   
    FechaFinID [INT] NOT NULL,   
    FechaRegistroID [INT] NOT NULL);  
GO  
CREATE CLUSTERED INDEX cci_TablaCLUSTEREDCOLUMNSTORE ON TablaCLUSTEREDCOLUMNSTORE (ProductosID);  
GO  
CREATE CLUSTERED COLUMNSTORE INDEX cci_TablaCLUSTEREDCOLUMNSTORE ON TablaCLUSTEREDCOLUMNSTORE  
WITH (DROP_EXISTING = ON);  
GO 

Deshabilitar o quitar el índice de almacén de columnas. 

ALTER INDEX [cci_TablaCLUSTEREDCOLUMNSTORE] ON [dbo].[TablaCLUSTEREDCOLUMNSTORE] DISABLE;  
ALTER INDEX [cci_TablaCLUSTEREDCOLUMNSTORE] ON [dbo].[TablaCLUSTEREDCOLUMNSTORE] REBUILD  
Compara el precio para envíos nacionales e internacionales con hasta un 70% de ahorro.

No Comments Yet.

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *