Download Creacion - WordPress.com
Transcript
ÍNDICES Investigar sobre bases de datos: ¿Qué es un índice? Definición de Índices Un índice es una estructura de datos que permite acceder a diferentes filas de una misma tabla a través de un campo (o campos clave). Los índices se actualizan automáticamente cuando realizamos operaciones de escritura en la base de datos. Este es un aspecto muy importante de cara al rendimiento de las operaciones de escritura, ya que además de escribir los datos en la tabla se escribiran también en el índice. Un número elevado de índices hará más lentas estas operaciones. Sin embargo, salvo casos excepcionales, el beneficio que aportan los indices compensa (de largo) esta penalización. ¿Para qué se utilizan los índices en bd? Un índice permite un acceso mucho más rápido a los datos. ¿Cuál es la sintaxis de un índice en bd? CREATE [UNIQUE] INDEX <nombre_indice>ON <nombre_tabla>( <nombre_campo> [ASC | DESC] {,<nombre_campo> [ASC | DESC]}) ); La pálabra clave UNIQUE especifica que que no pueden existir claves duplicadas en el índice. ASC | DESC especifican el criterio de ordenación elegido, ascendente o descendente, por defecto es ascendente. Ejemplo: En el apartado dedicado a la definición de tablas creamos la tabla tClientes, este ejmplo crea un índice único en el campo NIF. Esto nos permitirá buscar mucho mas rápido por el campo NIF y nos asegurará que no tengamos dos NIF iguales. CREATE UNIQUE INDEX UIX_CLIENTES_NIFON tCLIENTES (NIF); Elabora un script para la creación, actualización, y eliminación de un índice en una base de datos. Creación del índice CREATE INDEX indice1 ON dbo.spt_values (number DESC, name DESC ); Actualizacion del indice update statistics dbo.spt_values with fullscan Eliminacion de del indice DROP INDEX indice1 ON dbo.spt_values; Menciona 3 ventajas y desventajas de los índices en las bases de datos. Ventajas Una de las mayores ventajas es que cuando Mysql se encuentra un índice evitamos un “escaneo completo de la tabla” lo que hace que cuando tenemos grandes cantidades de datos en nuestras tablas, la mejora puede ser muy importante. Muy relacionado con el anterior… al evitar “escaneos completos de las tablas”, evitamos los siguientes problemas: Sobrecarga de CPU, sobrecarga de disco y concurrencia. Con los índices evitamos que Mysql tenga que hacer lecturas secuenciales. Los índices nos permiten una mayor rápidez en la ejecución de las consultas tipo SELECT lo que sea WHERE … Y por último será una ventaja para aquellos campos que no tengan datos duplicados, sin embargo si es un campo con valores que se repiten continuamente (Ej. Masculino/Femenino) no es aconsejable. Desventajas Pero a pesar de sus grandes ventajas no debemos abusar de ellos puesto que en determinadas situaciones no supondrá una mejora: Los índices son una desventaja en aquellas tablas las que se utiliza frecuentemente operaciones de escritura (Insert, Delete, Update), esto es porque los índices se actualizan cada vez que se modifica una columna. Los índices tambien suponen una desventaja en tablas demasiado pequeñas puesto que no necesitaremos ganar tiempo en las consultas. Tampoco son muy aconsejables cuando pretendemos que la tabla sobre la que se aplica devuelva una gran cantidad de datos en cada consulta. Por último hay que tener en cuenta que ocupan espacio y en determinadas ocasiones incluso más espacio que los propios datos. FORMATO DE ENTREGA PRÁCTICA DE ÍNDICES NOMBRE DEL ALUMNO: ACTIVIDAD CÓDIGO SQL Seleccionar la base de datos Master. USE master Seleccionar todos los registros de la tabla dbo.spt_values. select * from dbo.spt_values Crear un índice llamado indice1 para los campos name y number de manera descendente. CREATE INDEX indice1 ON dbo.spt_values (number DESC, name DESC ); Explica la manera en como un índice mejora el rendimiento de las bases de datos. Para que las consultas sean más rápidas y de una forma más ordenada para poder encontrar o saber ubicar lo que buscamos. Eliminar el índice llamado indice1. DROP INDEX indice1 ON dbo.spt_values; Crear un índice único para el campo type de CREATE unique INDEX unico ON dbo.spt_values (type); la tabla dbo.spt_values. delete dbo.spt_values where [type]='V' NOMBRE DEL ALUMNO: Sirve para identificar de forma única cada registro de una tabla ¿Para que utilizas el UNIQUE en la creación de un índice? Anota el script para habilitar y deshabilitar un índice en sqlServer. Alter index indice1 ON dbo.spt_values Disable Alter index indice1 ON dbo.spt_values REBUILD Explica el funcionamiento de los comandos DISABLE y REBUILD. Anota tus referencias de las investigaciones que realizaste Disable sirve para deshabilitar Y rebuid se usa para reparar la base de datos master o cambiarle la collation. http://sql.1keydata.com/es/sql-create-index.php http://www.devjoker.com/contenidos/Tutorial-SQL-/12/Indices.aspx http://msdn.microsoft.com/es-es/library/ms190691.aspx