Вы находитесь на странице: 1из 12

TÉCNICAS PARA LA OPTIMIZACIÓN DE BASE DE DATOS

PRESENTADO A ING.: BELKIS MILENA GÜELL MUÑOZ


PRESENTADO POR: LIBARDO NIÑO CRUZ

ESPECIALIZACIÓN TECNOLÓGICA EN GESTIÓN Y SEGURIDAD DE BASE


DE DATOS
SENA
2019
Base de datos original
Un índice es una estructura diferente dentro de la base de datos; creado con el
comando create index. Requiere su propio espacio en disco y contiene una copia
de los datos de la tabla. Eso significa que un índice es una redundancia. Crear un
índice no cambia los datos de la tabla; solamente establece una nueva estructura
de datos que hace referencia a la tabla. De hecho, un índice de base de datos se
parece mucho a un índice de un libro: ocupa su propio espacio, es redundante y
hace referencia a la información actual almacenada en otro lugar.

Diagrama de la base de datos secretaría de Salud con todas sus tablas.


Este laboratorio se iniciará con la Secretaría de Salud, los índices se crean
automáticamente para cada una de las llaves primarias, se busca crear índices para
las tablas que lo requieran, para optimizar la búsqueda de información.
4.1. Creación de índices en la base de datos de la Secretaría de Salud de la
Alcaldía de San Antonio del Sena.
Índices existentes
En la siguiente imagen de observan los índices que se crean automáticamente para
cada llave primaria, solo se muestran dos, pero si se revisan todas las tablas están
las tienen. Ahora se procederá a crear nuevos índices para las tablas que los
requieran.

También se puede verificar el tipo índex que tiene la tabla mediante el comando
execute sp_helpindex 'Persona'
Trazabilidad de la base de datos
Con esto se busca validar la transaccionalidad de la base de datos.
Para esto se debe ir a Tools => SQL server profile.

Para asegura que se tiene el nombre correcto de la base de datos, ingresa a la


opción -> Column Filters ->DatabaseName -> Like, en esta ultima colocamos el
nombre de la base de datos, -> Ok.

Se le dará Run, se observará la traza corriendo.


Luego volvemos a SQL server y corremos las consultas. Para este caso se busca
solo personas con cuyo nombre inicia con la letra C.
select * from persona
where nombre like 'C%';
se observa los tiempos, tipo de consulta, base de datos entre otros.

Una vez ya se tenga la trazabilidad se procede a detenerla, y guardar como


archivo de .trc, en su pc.
Posterior a estos pasos procedemos a abrir el optimizador. Tools -> Database
Engine tuning advinsor.
En este debemos de abrir el archivo .trc generado en el paso anterior, y
seleccionar la base de datos (SecSalud).
Luego de dará clic en Start Analysis, este nos arrojara un reporte al igual que una
recomendaciones.

En la siguiente tabla se observa la tablas que tienen índices, el tamaño en Mb, al


igual que el numero registros.

Esta tabla al tener muy poco registro dice que la optimización es solo de un 3%, al
igual recomienda que se debe hacer indexación a lo cual sugiere tres opciones,
pero el único que nos va dejar crear es de nombre y apellidos de la persona.
A continuación, los índices creados, solo se les crearon a aquellas tablas que van
a crecer o van a tener muchos datos, por ejemplo: EstadoEPS, es una tabla que
no va a crecer, por mucho va tener 20 registros.
Nombre tabla Índices
Persona Nombre y Apellido
HistorialPersona IdPersona

2. Alcaldía de San Antonio del Sena, necesita un informe de todos los usuarios
registrados en la base de datos de la Secretaria de Salud, que tengan la letra “C”
como inicial de su primer nombre.
Select * from persona
where nombre like 'C%'

 Identificar la consulta y crear índice para mejorar el rendimiento. Tomar


impresión de pantalla del plan de ejecución.

Se necesita un listado de todas las personas retiradas con los siguientes


datos: nombre, apellido, estado, eps, que servicios se le ha prestado
a las personas retiradas y cuanto cancelaron en total por los servicios
prestados. Adicionalmente se necesita que el informe salga en forma
ordenada alfabéticamente por apellido.
Script generado
select p.apellido, p.nombre, ep.descripcion as estadopersona, e.nombre as EPS,
sum(se.valor) as 'Total Servicios'
from Persona as P
inner join HistorialPersona as H on h.idpersona = p.idPersona
inner join EstadoPersona as EP on ep.idEstadoPersona = h.estadopersona
inner join EPS as E on h.ideps = e.ideps
inner join ServicioEPS as SE on e.ideps = se.idtiposervicio
where ep.descripcion = 'Inactivo'
group by p.nombre, p.apellido, ep.descripcion, e.nombre
order by p.apellido;
Resultado del script ejecutado

4.2. herramientas para la optimización.


Hacer las siguientes consultas con SMBD SQL Server y entregar la evidencia
solicitada:
1. Listar los propietarios por apellido sus predios y cuáles son las facturas que
tiene vigentes.
select p.apellido, pr.matricula, fv.fechaVencimiento as facturavigente
from propietario as P
inner join predio as Pr on p.cedula=pr.propietario_cedula
inner join facturaVigente as fv on pr.ficha=fv.fichaPredio
order by p.apellido
2. Organizar las facturas vigentes por fecha y concepto la suma valor pagado
por mes
select fechaVencimiento, totalPagar
from facturaVigente
order by fechaVencimiento
3. La secretaria de hacienda quiere saber cuáles facturas está pendiente por
concepto Declaración de Renta agrupándolos por el tipo de uso:
“Comercial, Gobierno, Mixto, Publico y Residencial”

4. La secretaria de Hacienda quiere un informe de las cuentas por pagar y


cobrar a terceros, necesita sus números de teléfono y su nombre para
poder hacer el cobro y pagar sus obligaciones.
select tr.nombre, tr.telefono, tr.celular, cc.valorCuenta as CuentaPorCobrar,
cp.ValorCuenta as CuentaPorPagar
from tercero tr
inner join cuentasPorCobrar cc on tr.codTercero= cc.codTercero
inner join cuentasPorPagar cp on cp.codTercero=tr.codTercero
5. Saber las facturas vigentes de estratos 1.2.3 sobre el impuesto predial, se
requiere la siguiente información: filtrado por estrato, fecha de vencimiento,
predio y nombre completo del propietario.