Uploaded by juanbussines

INF424 06 LAB02 SQL

advertisement
UASD/ 2013-1/ INF-424/
NOMBRE
Adrian Manuel
APELLIDO
Cordero
1
0
LAB 06-2
MATRICULA
0 3 9 3 3 5 6
SECCIÓN Sábados
TEMA 06: Integridad de Data (Constraints –Restricciones-)
Tiempo disponible: 60 mins.
6.2.1 La Dirección General de Impuestos Internos (DGII) pone a disposición del público en
general, un archivo de texto (*.TXT) con la base de datos de todos los Registros Nacionales de
Contribuyentes (RNCs) del país. En este laboratorio usted trabajará con ese archivo de texto e
importará estos datos a una tabla MySQL y comprobara las ventajas de utilizar índices al
realizar consultas de bases de datos.
Requerimientos
6.2.2 Ir a la página de la DGII y bajar la base de datos de RNCs:
a. Ir al URL https://www.dgii.gov.do/app/WebApps/ConsultasWeb/consultas/rnc.aspx
b. Bajar la base de datos de RNCs haciendo click en “Listado de todos los RNCs”
c. Una vez bajado el archivo DGII_RNC.zip, descomprímalo para obtener un archivo llamado
DGII_RNC.txt
6.2.3 Importando datos en MySQL a partir de un archivo de texto
En este paso, se importara el archivo DGII_RNC.txt bajado en el punto anterior hacia el esquema
inf424db. Mysql soporta muchas formas por las cuales se puede importar el contenido de un archivo de
texto hacia tabla(s) de un esquema. Entre ellas podemos encontrar:

La sentencia sql LOAD DATA INFILE. Ver secciones 3.3.3 y 13.2.6 del manual de mysql.

El utilitario mysqlimport. Es un cliente que suministra una interfaz de linea de commandos para la
sentencia sql LOAD DATA INFILE. Ver sección 4.5.5 del manual de mysql.
Para nuestro ejercicio, estaremos trabajando con el utilitario mysqlimport.
6.2.3.1 Crear la tabla llamada DGII_RNC, donde se depositaran los datos.
CREATE TABLE DGII_RNC
(campo1 varchar(200)
, campo2 varchar(200)
, campo3 varchar(200)
, campo4 varchar(200)
, campo5 varchar(200)
, campo6 varchar(200)
, campo7 varchar(200)
, campo8 varchar(200)
, campo9 varchar(200)
, campo10 varchar(200)
, campo11 varchar(200)
);
Laboratorio 6-2 del tema Integridad de Data, Profesores Víctor Calcaño y Julio Castro, Página 1 of 3
6.2.3.2 Importar el archivo de texto usando la herramienta mysqlimport:
C:\TMP>mysqlimport -d --fields-terminated-by="|" -u root -p --local inf424db DGII_RNC.TXT
Enter password: *****
Los resultados de este comando deben parecerse a estos:
inf424db.DGII_RNC: Records: 2347779
Deleted: 0
Skipped: 0
Warnings: 410659
6.2.3.3 Abrir Mysql Workbench y verificar que la tabla DGII_RNC está poblada. Verifique cuantos
registros tiene y si estos coinciden con la cantidad de registros cargados por la herramienta mysqlimport.
6.2.4 Comprobando eficiencia de las consultas (queries) al hacer búsquedas con índices
a) Usando la herramienta Mysql Workbench, realice la siguiente consulta a la tabla DGII_RNC del
esquema inf424db: select * from dgii_rnc WHERE CAMPO1='101009918'
Escriba la duración de la consulta, que está dada en la ventana ‘Output’ de Mysql Workbench, en la
columna ‘Duration/Fetch’. Nota: al autor de este ejercicio este ejercicio, la ejecución de esta
consulta duró 6.094 segundos.
9.086 segundos
b) Cree un índice llamado IDX_CAMPO1 haciendo referencia al campo de la tabla DGII_RNC llamado
‘CAMPO1’ para que la búsqueda por este campo sea más efectiva. Escriba la sentencia CREATE
INDEX utilizada.
CREATE INDEX DX_CAMPO1 ON DGII_RNC(CAMPO1]);
c) ¿Cuánto tiempo le tomó al motor del DBMS MySQL, el crear el índice IDX_CAMPO1?
3.02 segundos
d) Usando la herramienta Mysql Workbench, realice nuevamente la siguiente consulta a la tabla
DGII_RNC del esquema inf424db, luego de crear el índice:
select * from dgii_rnc WHERE CAMPO1='101009918';
Escriba la duración de la consulta, que está dada en la ventana ‘Output’ de Mysql Workbench, en la
columna ‘Duration/Fetch’. Nota: Al autor de este ejercicio este ejercicio, luego de crear el índice
IDX_CAMPO1, la ejecución de esta consulta duró 0.031 segundos.
0.0004 segundos
Laboratorio 6-2 del tema Integridad de Data, Profesores Víctor Calcaño y Julio Castro, Página 2 of 3
e) Escriba el tiempo que ahorró esta consulta, luego de crear el índice IDX_CAMPO1. Para esto,
escriba la duración de la consulta antes de crear el índice y réstelo al valor de la duración de la
consulta luego de crear el índice.
6.066 segundos
f)
Escriba el tiempo aproximado de respuesta al usuario que se ahorraría en 1) 500 consultas
similares a la anterior, 2)10,000 consultas similares a la anterior, 3)500,000 búsquedas similares
a la anterior:
En 500 consultas ahorro 6.066 * 500=3,033minutos
En 10,000 consultas ahorro 6.066 * 10,000 =60,660 minutos
En 500,000 consultas ahorro 6.066* 500,000=3,033,000 minutos
Laboratorio 6-2 del tema Integridad de Data, Profesores Víctor Calcaño y Julio Castro, Página 3 of 3
Download