UCV.
Manejo de Indices SQL Server
SQL Server CREAR ÍNDICE
Introducción a los índices no agrupados de SQL Server
Un índice no agrupado es una estructura de datos que mejora la velocidad de
recuperación de datos de las tablas. A diferencia de un índice agrupado , un índice
no agrupado ordena y almacena datos por separado de las filas de datos de la
tabla. Es una copia de las columnas de datos seleccionadas de una tabla con los
enlaces a la tabla asociada.
Similar a un índice agrupado, un índice no agrupado usa la estructura de árbol B
para organizar sus datos.
Una tabla puede tener uno o más índices no agrupados y cada índice no agrupado
puede incluir una o más columnas de la tabla.
La siguiente imagen ilustra la estructura del índice no agrupado:
Además de almacenar los valores de clave de índice, los nodos hoja también
almacenan punteros de fila a las filas de datos que contienen los valores de
clave. Estos punteros de fila también se conocen como localizadores de fila.
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
Si la tabla subyacente es una tabla agrupada, el puntero de fila es la clave de índice
agrupada. En caso de que la tabla subyacente sea un montón, el puntero de fila
apunta a la fila de la tabla.
CREATE INDEX Declaración de SQL Server
Para crear un índice no agrupado, usa la CREATE INDEXdeclaración:
CREATE [NONCLUSTERED] INDEX index_name
ON table_name(column_list);
Lenguaje de código: SQL (lenguaje de consulta estructurado) ( sql )
En esta sintaxis:
• Primero, especifique el nombre del índice después de la CREATE
NONCLUSTERED INDEX cláusula. Tenga en cuenta que la NONCLUSTEREDpalabra
clave es opcional.
• En segundo lugar, especifique el nombre de la tabla en la que desea crear el
índice y una lista de columnas de esa tabla como columnas de clave de
índice.
CREATE INDEX Ejemplos de sentencias de SQL Server
Usaremos el sales.customers de la base de datos de muestra para la demostración.
La sales.customers tabla es una tabla agrupada porque tiene una clave
principal customer_id .
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
A) Uso de la CREATE INDEXdeclaración de SQL Server para crear un índice no
agrupado para un ejemplo de columna
Esta declaración encuentra clientes que se ubican en Atwater:
SELECT
customer_id,
city
FROM
sales.customers
WHERE
city = 'Atwater';
Lenguaje de código: SQL (lenguaje de consulta estructurado) ( sql )
Si muestra el plan de ejecución estimado, verá que el optimizador de consultas
escanea el índice agrupado para encontrar la fila. Esto se debe a que
la sales.customerstabla no tiene un índice para la citycolumna.
Para mejorar la velocidad de esta consulta, puede crear un nuevo índice con el
nombre ix_customers_cityde la citycolumna:
CREATE INDEX ix_customers_city
ON sales.customers(city);
Lenguaje de código: SQL (lenguaje de consulta estructurado) ( sql )
Ahora, si vuelve a mostrar el plan de ejecución estimado de la consulta anterior,
encontrará que el optimizador de consultas utiliza el índice no
agrupado ix_customers_city:
B) Uso de la CREATE INDEXdeclaración de SQL Server para crear un índice no
agrupado para el ejemplo de varias columnas
La siguiente declaración encuentra al cliente cuyo apellido es Bergy nombre
es Monika:
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
last_name = 'Berg' AND
first_name = 'Monika';
Lenguaje de código: SQL (lenguaje de consulta estructurado) ( sql )
El optimizador de consultas escanea el índice agrupado para localizar al cliente.
Para acelerar la recuperación de datos, puede crear un índice no agrupado que
incluya columnas last_namey first_name:
CREATE INDEX ix_customers_name
ON sales.customers(last_name, first_name);
Lenguaje de código: SQL (lenguaje de consulta estructurado) (sql)
Ahora, el optimizador de consultas usa el índice ix_customers_name para encontrar al
cliente.
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
last_name = 'Berg' AND
first_name = 'Monika';
Lenguaje de código: SQL (lenguaje de consulta estructurado) ( sql )
Cuando crea un índice no agrupado que consta de varias columnas, el orden de las
columnas en el índice es muy importante. Debe colocar las columnas que utiliza
con frecuencia para consultar datos al principio de la lista de columnas.
Por ejemplo, la siguiente declaración busca clientes cuyo apellido es Albert. Debido
a que last_namees la columna más a la izquierda del índice, el optimizador de
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
consultas puede aprovechar el índice y utiliza el método de búsqueda de índice
para realizar búsquedas:
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
last_name = 'Albert';
Lenguaje de código: SQL (lenguaje de consulta estructurado) (sql)
Esta declaración encuentra clientes cuyo nombre es Adam. También aprovecha
el ix_customer_name índice. Pero necesita escanear todo el índice para buscar, que es
más lento que la búsqueda de índice.
SELECT
customer_id,
first_name,
last_name
FROM
sales.customers
WHERE
first_name = 'Adam';
Lenguaje de código: SQL (lenguaje de consulta estructurado) (sql)
Por lo tanto, es una buena práctica colocar las columnas que usa con frecuencia
para consultar datos al comienzo de la lista de columnas del índice.
En este tutorial, ha aprendido sobre los índices no agrupados y cómo usar la
instrucción de SQL Server CREATE INDEX para crear índices no agrupados para tablas
a fin de mejorar la velocidad de recuperación de datos.
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
PRACTICA GUIADA: INDICES
En este ejemplo se crea un índice agrupado único para el campo "codigo" de la tabla "libros":
create unique clustered index I_libros_codigo
on libros(codigo);
Para identificar los índices fácilmente, podemos agregar un prefijo al nombre del índice, por
ejemplo "I" y luego el nombre de la tabla y/o campo.
En este ejemplo se crea un índice no agrupado para el campo "titulo" de la tabla "libros":
create nonclustered index I_libros_titulo
on libros(titulo);
Un índice puede tener más de un campo como clave, son índices compuestos. Los campos de un
índice compuesto tienen que ser de la misma tabla (excepto cuando se crea en una vista - tema
que veremos posteriormente).
Creamos un índice compuesto para el campo "autor" y "editorial":
create index I_libros_autoreditorial
on libros(autor,editorial);
SQL Server crea automáticamente índices cuando se establece una restricción "primary key" o
"unique" en una tabla. Al crear una restricción "primary key", si no se especifica, el índice será
agrupado (clustered) a menos que ya exista un índice agrupado para dicha tabla. Al crear una
restricción "unique", si no se especifica, el índice será no agrupado (non-clustered).
Ahora podemos entender el resultado del procedimiento almacenado "sp_helpconstraint" cuando
en la columna "constraint_type" mostraba el tipo de índice seguido de las palabras "clustered" o
"non_clustered".
Puede especificarse que un índice sea agrupado o no agrupado al agregar estas restricciones.
Agregamos una restricción "primary key" al campo "codigo" de la tabla "libros" especificando que
cree un índice NO agrupado:
alter table libros
add constraint PK_libros_codigo
primary key nonclustered (codigo);
Para ver los indices de una tabla:
exec sp_helpindex libros;
Muestra el nombre del índice, si es agrupado (o no), primary (o unique) y el campo por el cual se
indexa.
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
Todos los índices de la base de datos activa se almacenan en la tabla del sistema "sysindexes",
podemos consultar dicha tabla tipeando:
select name from sysindexes;
Para ver todos los índices de la base de datos activa creados por nosotros podemos tipear la
siguiente consulta:
select name from sysindexes
where name like 'I_%';
Servidor de SQL Server instalado en forma local.
Ingresemos el siguiente lote de comandos en el SQL Server Management Studio:
if object_id('libros') is not null
drop table libros;
create table libros(
codigo int identity,
titulo varchar(40),
autor varchar(30),
editorial varchar(15)
);
go
-- Creamos un índice agrupado único para el campo "codigo" de la tabla "libros":
create unique clustered index I_libros_codigo
on libros(codigo);
-- Creamos un índice no agrupado para el campo "titulo":
create nonclustered index I_libros_titulo
on libros(titulo);
-- Veamos los indices de "libros":
exec sp_helpindex libros;
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
-- Creamos una restricción "primary key" al campo "codigo" especificando
-- que cree un índice NO agrupado:
alter table libros
add constraint PK_libros_codigo
primary key nonclustered (codigo);
-- Verificamos que creó un índice automáticamente:
exec sp_helpindex libros;
-- Analicemos la información que nos muestra "sp_helpconstraint":
exec sp_helpconstraint libros;
-- Creamos un índice compuesto para el campo "autor" y "editorial":
create index I_libros_autoreditorial
on libros(autor,editorial);
-- Consultamos la tabla "sysindexes":
select name from sysindexes;
-- Veamos los índices de la base de datos activa creados por nosotros
-- podemos tipear la siguiente consulta:
select name from sysindexes
where name like 'I_%';
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
Actividades a Desarrollar
Ejecute el siguiente script “Universidad.sql”
1. Crear un índice no agrupado para Ordenar las filas de la tabla “Persona” por apellido1,
apellido2 y tipo.
2. Crear un índice único para evitar repetir nombre de “departamento”.
3. Crear una vista que reporte alumnos por curso, crear un índice para ordenar el listado de
cursos (orden alfabetico).
4. Crear una vista para listar profesores y sus respectivas asignaturas y alumnos
matriculados. Crear índices para ordenar listado por: Profesor, Curso y alumnos.
Universidad.sql
DROP DATABASE IF EXISTS universidad;
CREATE DATABASE universidad CHARACTER SET utf8mb4;
USE universidad;
CREATE TABLE departamento (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL
);
CREATE TABLE persona (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nif VARCHAR(9) UNIQUE,
nombre VARCHAR(25) NOT NULL,
apellido1 VARCHAR(50) NOT NULL,
apellido2 VARCHAR(50),
ciudad VARCHAR(25) NOT NULL,
direccion VARCHAR(50) NOT NULL,
telefono VARCHAR(9),
fecha_nacimiento DATE NOT NULL,
sexo ENUM('H', 'M') NOT NULL,
tipo ENUM('profesor', 'alumno') NOT NULL
);
CREATE TABLE profesor (
id_profesor INT UNSIGNED PRIMARY KEY,
id_departamento INT UNSIGNED NOT NULL,
FOREIGN KEY (id_profesor) REFERENCES persona(id),
FOREIGN KEY (id_departamento) REFERENCES departamento(id)
);
CREATE TABLE grado (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL
);
CREATE TABLE asignatura (
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
creditos FLOAT UNSIGNED NOT NULL,
tipo ENUM('básica', 'obligatoria', 'optativa') NOT NULL,
curso TINYINT UNSIGNED NOT NULL,
cuatrimestre TINYINT UNSIGNED NOT NULL,
id_profesor INT UNSIGNED,
id_grado INT UNSIGNED NOT NULL,
FOREIGN KEY(id_profesor) REFERENCES profesor(id_profesor),
FOREIGN KEY(id_grado) REFERENCES grado(id)
);
CREATE TABLE curso_escolar (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
anyo_inicio YEAR NOT NULL,
anyo_fin YEAR NOT NULL
);
CREATE TABLE alumno_se_matricula_asignatura (
id_alumno INT UNSIGNED NOT NULL,
id_asignatura INT UNSIGNED NOT NULL,
id_curso_escolar INT UNSIGNED NOT NULL,
PRIMARY KEY (id_alumno, id_asignatura, id_curso_escolar),
FOREIGN KEY (id_alumno) REFERENCES persona(id),
FOREIGN KEY (id_asignatura) REFERENCES asignatura(id),
FOREIGN KEY (id_curso_escolar) REFERENCES curso_escolar(id)
);
/* Departamento */
INSERT INTO departamento VALUES (1, 'Informática');
INSERT INTO departamento VALUES (2, 'Matemáticas');
INSERT INTO departamento VALUES (3, 'EconomÃa y Empresa');
INSERT INTO departamento VALUES (4, 'Educación');
INSERT INTO departamento VALUES (5, 'AgronomÃa');
INSERT INTO departamento VALUES (6, 'QuÃmica y FÃsica');
INSERT INTO departamento VALUES (7, 'FilologÃa');
INSERT INTO departamento VALUES (8, 'Derecho');
INSERT INTO departamento VALUES (9, 'BiologÃa y GeologÃa');
/* Persona */
INSERT INTO persona VALUES (1, '26902806M', 'Salvador',
'Sánchez', 'Pérez', 'AlmerÃa', 'C/ Real del barrio alto',
'950254837', '1991/03/28', 'H', 'alumno');
INSERT INTO persona VALUES (2, '89542419S', 'Juan', 'Saez',
'Vega', 'AlmerÃa', 'C/ Mercurio', '618253876', '1992/08/08', 'H',
'alumno');
INSERT INTO persona VALUES (3, '11105554G', 'Zoe', 'Ramirez',
'Gea', 'AlmerÃa', 'C/ Marte', '618223876', '1979/08/19', 'M',
'profesor');
INSERT INTO persona VALUES (4, '17105885A', 'Pedro', 'Heller',
'Pagac', 'AlmerÃa', 'C/ Estrella fugaz', NULL, '2000/10/05', 'H',
'alumno');
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
INSERT INTO persona VALUES (5, '38223286T', 'David', 'Schmidt',
'Fisher', 'AlmerÃa', 'C/ Venus', '678516294', '1978/01/19', 'H',
'profesor');
INSERT INTO persona VALUES (6, '04233869Y', 'José', 'Koss',
'Bayer', 'AlmerÃa', 'C/ Júpiter', '628349590', '1998/01/28',
'H', 'alumno');
INSERT INTO persona VALUES (7, '97258166K', 'Ismael', 'Strosin',
'Turcotte', 'AlmerÃa', 'C/ Neptuno', NULL, '1999/05/24', 'H',
'alumno');
INSERT INTO persona VALUES (8, '79503962T', 'Cristina', 'Lemke',
'Rutherford', 'AlmerÃa', 'C/ Saturno', '669162534', '1977/08/21',
'M', 'profesor');
INSERT INTO persona VALUES (9, '82842571K', 'Ramón', 'Herzog',
'Tremblay', 'AlmerÃa', 'C/ Urano', '626351429', '1996/11/21',
'H', 'alumno');
INSERT INTO persona VALUES (10, '61142000L', 'Esther', 'Spencer',
'Lakin', 'AlmerÃa', 'C/ Plutón', NULL, '1977/05/19', 'M',
'profesor');
INSERT INTO persona VALUES (11, '46900725E', 'Daniel', 'Herman',
'Pacocha', 'AlmerÃa', 'C/ Andarax', '679837625', '1997/04/26',
'H', 'alumno');
INSERT INTO persona VALUES (12, '85366986W', 'Carmen', 'Streich',
'Hirthe', 'AlmerÃa', 'C/ Almanzora', NULL, '1971-04-29', 'M',
'profesor');
INSERT INTO persona VALUES (13, '73571384L', 'Alfredo',
'Stiedemann', 'Morissette', 'AlmerÃa', 'C/ Guadalquivir',
'950896725', '1980/02/01', 'H', 'profesor');
INSERT INTO persona VALUES (14, '82937751G', 'Manolo', 'Hamill',
'Kozey', 'AlmerÃa', 'C/ Duero', '950263514', '1977/01/02', 'H',
'profesor');
INSERT INTO persona VALUES (15, '80502866Z', 'Alejandro',
'Kohler', 'Schoen', 'AlmerÃa', 'C/ Tajo', '668726354',
'1980/03/14', 'H', 'profesor');
INSERT INTO persona VALUES (16, '10485008K', 'Antonio', 'Fahey',
'Considine', 'AlmerÃa', 'C/ Sierra de los Filabres', NULL,
'1982/03/18', 'H', 'profesor');
INSERT INTO persona VALUES (17, '85869555K', 'Guillermo',
'Ruecker', 'Upton', 'AlmerÃa', 'C/ Sierra de Gádor', NULL,
'1973/05/05', 'H', 'profesor');
INSERT INTO persona VALUES (18, '04326833G', 'Micaela',
'Monahan', 'Murray', 'AlmerÃa', 'C/ Veleta', '662765413',
'1976/02/25', 'H', 'profesor');
INSERT INTO persona VALUES (19, '11578526G', 'Inma', 'Lakin',
'Yundt', 'AlmerÃa', 'C/ Picos de Europa', '678652431',
'1998/09/01', 'M', 'alumno');
INSERT INTO persona VALUES (20, '79221403L', 'Francesca',
'Schowalter', 'Muller', 'AlmerÃa', 'C/ Quinto pino', NULL,
'1980/10/31', 'H', 'profesor');
INSERT INTO persona VALUES (21, '79089577Y', 'Juan',
'Gutiérrez', 'López', 'AlmerÃa', 'C/ Los pinos', '678652431',
'1998/01/01', 'H', 'alumno');
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
INSERT INTO persona VALUES (22, '41491230N', 'Antonio', 'DomÃ-
nguez', 'Guerrero', 'AlmerÃa', 'C/ Cabo de Gata', '626652498',
'1999/02/11', 'H', 'alumno');
INSERT INTO persona VALUES (23, '64753215G', 'Irene',
'Hernández', 'MartÃnez', 'AlmerÃa', 'C/ Zapillo', '628452384',
'1996/03/12', 'M', 'alumno');
INSERT INTO persona VALUES (24, '85135690V', 'Sonia', 'Gea',
'Ruiz', 'AlmerÃa', 'C/ Mercurio', '678812017', '1995/04/13', 'M',
'alumno');
/* Profesor */
INSERT INTO profesor VALUES (3, 1);
INSERT INTO profesor VALUES (5, 2);
INSERT INTO profesor VALUES (8, 3);
INSERT INTO profesor VALUES (10, 4);
INSERT INTO profesor VALUES (12, 4);
INSERT INTO profesor VALUES (13, 6);
INSERT INTO profesor VALUES (14, 1);
INSERT INTO profesor VALUES (15, 2);
INSERT INTO profesor VALUES (16, 3);
INSERT INTO profesor VALUES (17, 4);
INSERT INTO profesor VALUES (18, 5);
INSERT INTO profesor VALUES (20, 6);
/* Grado */
INSERT INTO grado VALUES (1, 'Grado en IngenierÃa AgrÃcola (Plan
2015)');
INSERT INTO grado VALUES (2, 'Grado en IngenierÃa Eléctrica
(Plan 2014)');
INSERT INTO grado VALUES (3, 'Grado en IngenierÃa Electrónica
Industrial (Plan 2010)');
INSERT INTO grado VALUES (4, 'Grado en IngenierÃa Informática
(Plan 2015)');
INSERT INTO grado VALUES (5, 'Grado en IngenierÃa Mecánica (Plan
2010)');
INSERT INTO grado VALUES (6, 'Grado en IngenierÃa QuÃmica
Industrial (Plan 2010)');
INSERT INTO grado VALUES (7, 'Grado en BiotecnologÃa (Plan
2015)');
INSERT INTO grado VALUES (8, 'Grado en Ciencias Ambientales (Plan
2009)');
INSERT INTO grado VALUES (9, 'Grado en Matemáticas (Plan
2010)');
INSERT INTO grado VALUES (10, 'Grado en QuÃmica (Plan 2009)');
/* Asignatura */
INSERT INTO asignatura VALUES (1, 'Õlgegra lineal y matemática
discreta', 6, 'básica', 1, 1, 3, 4);
INSERT INTO asignatura VALUES (2, 'Cálculo', 6, 'básica', 1, 1,
14, 4);
INSERT INTO asignatura VALUES (3, 'FÃsica para informática', 6,
'básica', 1, 1, 3, 4);
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
INSERT INTO asignatura VALUES (4, 'Introducción a la
programación', 6, 'básica', 1, 1, 14, 4);
INSERT INTO asignatura VALUES (5, 'Organización y gestión de
empresas', 6, 'básica', 1, 1, 3, 4);
INSERT INTO asignatura VALUES (6, 'EstadÃstica', 6, 'básica', 1,
2, 14, 4);
INSERT INTO asignatura VALUES (7, 'Estructura y tecnologÃa de
computadores', 6, 'básica', 1, 2, 3, 4);
INSERT INTO asignatura VALUES (8, 'Fundamentos de electrónica',
6, 'básica', 1, 2, 14, 4);
INSERT INTO asignatura VALUES (9, 'Lógica y algorÃtmica', 6,
'básica', 1, 2, 3, 4);
INSERT INTO asignatura VALUES (10, 'MetodologÃa de la
programación', 6, 'básica', 1, 2, 14, 4);
INSERT INTO asignatura VALUES (11, 'Arquitectura de
Computadores', 6, 'básica', 2, 1, 3, 4);
INSERT INTO asignatura VALUES (12, 'Estructura de Datos y
Algoritmos I', 6, 'obligatoria', 2, 1, 3, 4);
INSERT INTO asignatura VALUES (13, 'IngenierÃa del Software', 6,
'obligatoria', 2, 1, 14, 4);
INSERT INTO asignatura VALUES (14, 'Sistemas Inteligentes', 6,
'obligatoria', 2, 1, 3, 4);
INSERT INTO asignatura VALUES (15, 'Sistemas Operativos', 6,
'obligatoria', 2, 1, 14, 4);
INSERT INTO asignatura VALUES (16, 'Bases de Datos', 6,
'básica', 2, 2, 14, 4);
INSERT INTO asignatura VALUES (17, 'Estructura de Datos y
Algoritmos II', 6, 'obligatoria', 2, 2, 14, 4);
INSERT INTO asignatura VALUES (18, 'Fundamentos de Redes de
Computadores', 6 ,'obligatoria', 2, 2, 3, 4);
INSERT INTO asignatura VALUES (19, 'Planificación y Gestión de
Proyectos Informáticos', 6, 'obligatoria', 2, 2, 3, 4);
INSERT INTO asignatura VALUES (20, 'Programación de Servicios
Software', 6, 'obligatoria', 2, 2, 14, 4);
INSERT INTO asignatura VALUES (21, 'Desarrollo de interfaces de
usuario', 6, 'obligatoria', 3, 1, 14, 4);
INSERT INTO asignatura VALUES (22, 'IngenierÃa de Requisitos', 6,
'optativa', 3, 1, NULL, 4);
INSERT INTO asignatura VALUES (23, 'Integración de las
TecnologÃas de la Información en las Organizaciones', 6,
'optativa', 3, 1, NULL, 4);
INSERT INTO asignatura VALUES (24, 'Modelado y Diseño del
Software 1', 6, 'optativa', 3, 1, NULL, 4);
INSERT INTO asignatura VALUES (25, 'Multiprocesadores', 6,
'optativa', 3, 1, NULL, 4);
INSERT INTO asignatura VALUES (26, 'Seguridad y cumplimiento
normativo', 6, 'optativa', 3, 1, NULL, 4);
INSERT INTO asignatura VALUES (27, 'Sistema de Información para
las Organizaciones', 6, 'optativa', 3, 1, NULL, 4);
INSERT INTO asignatura VALUES (28, 'TecnologÃas web', 6,
'optativa', 3, 1, NULL, 4);
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
INSERT INTO asignatura VALUES (29, 'TeorÃa de códigos y
criptografÃa', 6, 'optativa', 3, 1, NULL, 4);
INSERT INTO asignatura VALUES (30, 'Administración de bases de
datos', 6, 'optativa', 3, 2, NULL, 4);
INSERT INTO asignatura VALUES (31, 'Herramientas y Métodos de
IngenierÃa del Software', 6, 'optativa', 3, 2, NULL, 4);
INSERT INTO asignatura VALUES (32, 'Informática industrial y
robótica', 6, 'optativa', 3, 2, NULL, 4);
INSERT INTO asignatura VALUES (33, 'IngenierÃa de Sistemas de
Información', 6, 'optativa', 3, 2, NULL, 4);
INSERT INTO asignatura VALUES (34, 'Modelado y Diseño del
Software 2', 6, 'optativa', 3, 2, NULL, 4);
INSERT INTO asignatura VALUES (35, 'Negocio Electrónico', 6,
'optativa', 3, 2, NULL, 4);
INSERT INTO asignatura VALUES (36, 'Periféricos e interfaces',
6, 'optativa', 3, 2, NULL, 4);
INSERT INTO asignatura VALUES (37, 'Sistemas de tiempo real', 6,
'optativa', 3, 2, NULL, 4);
INSERT INTO asignatura VALUES (38, 'TecnologÃas de acceso a red',
6, 'optativa', 3, 2, NULL, 4);
INSERT INTO asignatura VALUES (39, 'Tratamiento digital de
imágenes', 6, 'optativa', 3, 2, NULL, 4);
INSERT INTO asignatura VALUES (40, 'Administración de redes y
sistemas operativos', 6, 'optativa', 4, 1, NULL, 4);
INSERT INTO asignatura VALUES (41, 'Almacenes de Datos', 6,
'optativa', 4, 1, NULL, 4);
INSERT INTO asignatura VALUES (42, 'Fiabilidad y Gestión de
Riesgos', 6, 'optativa', 4, 1, NULL, 4);
INSERT INTO asignatura VALUES (43, 'LÃneas de Productos
Software', 6, 'optativa', 4, 1, NULL, 4);
INSERT INTO asignatura VALUES (44, 'Procesos de IngenierÃa del
Software 1', 6, 'optativa', 4, 1, NULL, 4);
INSERT INTO asignatura VALUES (45, 'TecnologÃas multimedia', 6,
'optativa', 4, 1, NULL, 4);
INSERT INTO asignatura VALUES (46, 'Análisis y planificación de
las TI', 6, 'optativa', 4, 2, NULL, 4);
INSERT INTO asignatura VALUES (47, 'Desarrollo Rápido de
Aplicaciones', 6, 'optativa', 4, 2, NULL, 4);
INSERT INTO asignatura VALUES (48, 'Gestión de la Calidad y de
la Innovación Tecnológica', 6, 'optativa', 4, 2, NULL, 4);
INSERT INTO asignatura VALUES (49, 'Inteligencia del Negocio', 6,
'optativa', 4, 2, NULL, 4);
INSERT INTO asignatura VALUES (50, 'Procesos de IngenierÃa del
Software 2', 6, 'optativa', 4, 2, NULL, 4);
INSERT INTO asignatura VALUES (51, 'Seguridad Informática', 6,
'optativa', 4, 2, NULL, 4);
INSERT INTO asignatura VALUES (52, 'Biologia celular', 6,
'básica', 1, 1, NULL, 7);
INSERT INTO asignatura VALUES (53, 'FÃsica', 6, 'básica', 1, 1,
NULL, 7);
INSERT INTO asignatura VALUES (54, 'Matemáticas I', 6,
'básica', 1, 1, NULL, 7);
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
INSERT INTO asignatura VALUES (55, 'QuÃmica general', 6,
'básica', 1, 1, NULL, 7);
INSERT INTO asignatura VALUES (56, 'QuÃmica orgánica', 6,
'básica', 1, 1, NULL, 7);
INSERT INTO asignatura VALUES (57, 'BiologÃa vegetal y animal',
6, 'básica', 1, 2, NULL, 7);
INSERT INTO asignatura VALUES (58, 'BioquÃmica', 6, 'básica', 1,
2, NULL, 7);
INSERT INTO asignatura VALUES (59, 'Genética', 6, 'básica', 1,
2, NULL, 7);
INSERT INTO asignatura VALUES (60, 'Matemáticas II', 6,
'básica', 1, 2, NULL, 7);
INSERT INTO asignatura VALUES (61, 'MicrobiologÃa', 6, 'básica',
1, 2, NULL, 7);
INSERT INTO asignatura VALUES (62, 'Botánica agrÃcola', 6,
'obligatoria', 2, 1, NULL, 7);
INSERT INTO asignatura VALUES (63, 'FisiologÃa vegetal', 6,
'obligatoria', 2, 1, NULL, 7);
INSERT INTO asignatura VALUES (64, 'Genética molecular', 6,
'obligatoria', 2, 1, NULL, 7);
INSERT INTO asignatura VALUES (65, 'IngenierÃa bioquÃmica', 6,
'obligatoria', 2, 1, NULL, 7);
INSERT INTO asignatura VALUES (66, 'Termodinámica y cinética
quÃmica aplicada', 6, 'obligatoria', 2, 1, NULL, 7);
INSERT INTO asignatura VALUES (67, 'Biorreactores', 6,
'obligatoria', 2, 2, NULL, 7);
INSERT INTO asignatura VALUES (68, 'BiotecnologÃa microbiana', 6,
'obligatoria', 2, 2, NULL, 7);
INSERT INTO asignatura VALUES (69, 'IngenierÃa genética', 6,
'obligatoria', 2, 2, NULL, 7);
INSERT INTO asignatura VALUES (70, 'InmunologÃa', 6,
'obligatoria', 2, 2, NULL, 7);
INSERT INTO asignatura VALUES (71, 'VirologÃa', 6, 'obligatoria',
2, 2, NULL, 7);
INSERT INTO asignatura VALUES (72, 'Bases moleculares del
desarrollo vegetal', 4.5, 'obligatoria', 3, 1, NULL, 7);
INSERT INTO asignatura VALUES (73, 'FisiologÃa animal', 4.5,
'obligatoria', 3, 1, NULL, 7);
INSERT INTO asignatura VALUES (74, 'Metabolismo y biosÃntesis de
biomoléculas', 6, 'obligatoria', 3, 1, NULL, 7);
INSERT INTO asignatura VALUES (75, 'Operaciones de separación',
6, 'obligatoria', 3, 1, NULL, 7);
INSERT INTO asignatura VALUES (76, 'PatologÃa molecular de
plantas', 4.5, 'obligatoria', 3, 1, NULL, 7);
INSERT INTO asignatura VALUES (77, 'Técnicas instrumentales
básicas', 4.5, 'obligatoria', 3, 1, NULL, 7);
INSERT INTO asignatura VALUES (78, 'Bioinformática', 4.5,
'obligatoria', 3, 2, NULL, 7);
INSERT INTO asignatura VALUES (79, 'BiotecnologÃa de los
productos hortofrutÃculas', 4.5, 'obligatoria', 3, 2, NULL, 7);
INSERT INTO asignatura VALUES (80, 'BiotecnologÃa vegetal', 6,
'obligatoria', 3, 2, NULL, 7);
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
INSERT INTO asignatura VALUES (81, 'Genómica y proteómica',
4.5, 'obligatoria', 3, 2, NULL, 7);
INSERT INTO asignatura VALUES (82, 'Procesos biotecnológicos',
6, 'obligatoria', 3, 2, NULL, 7);
INSERT INTO asignatura VALUES (83, 'Técnicas instrumentales
avanzadas', 4.5, 'obligatoria', 3, 2, NULL, 7);
/* Curso escolar */
INSERT INTO curso_escolar VALUES (1, 2014, 2015);
INSERT INTO curso_escolar VALUES (2, 2015, 2016);
INSERT INTO curso_escolar VALUES (3, 2016, 2017);
INSERT INTO curso_escolar VALUES (4, 2017, 2018);
INSERT INTO curso_escolar VALUES (5, 2018, 2019);
/* Alumno se matricula en asignatura */
INSERT INTO alumno_se_matricula_asignatura VALUES (1, 1, 1);
INSERT INTO alumno_se_matricula_asignatura VALUES (1, 2, 1);
INSERT INTO alumno_se_matricula_asignatura VALUES (1, 3, 1);
INSERT INTO alumno_se_matricula_asignatura VALUES (2, 1, 1);
INSERT INTO alumno_se_matricula_asignatura VALUES (2, 2, 1);
INSERT INTO alumno_se_matricula_asignatura VALUES (2, 3, 1);
INSERT INTO alumno_se_matricula_asignatura VALUES (4, 1, 1);
INSERT INTO alumno_se_matricula_asignatura VALUES (4, 2, 1);
INSERT INTO alumno_se_matricula_asignatura VALUES (4, 3, 1);
INSERT INTO alumno_se_matricula_asignatura VALUES (24, 1, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (24, 2, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (24, 3, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (24, 4, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (24, 5, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (24, 6, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (24, 7, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (24, 8, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (24, 9, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (24, 10, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (23, 1, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (23, 2, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (23, 3, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (23, 4, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (23, 5, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (23, 6, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (23, 7, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (23, 8, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (23, 9, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (23, 10, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (19, 1, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (19, 2, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (19, 3, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (19, 4, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (19, 5, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (19, 6, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (19, 7, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (19, 8, 5);
MSc Ing. José Arturo Diaz Pulido.
UCV. Manejo de Indices SQL Server
INSERT INTO alumno_se_matricula_asignatura VALUES (19, 9, 5);
INSERT INTO alumno_se_matricula_asignatura VALUES (19, 10, 5);
MSc Ing. José Arturo Diaz Pulido.