“Optimización de sentencias MySQL” jueves 26 de septiembre de 2013.

Slides:



Advertisements
Presentaciones similares
Introducción Lenguaje de manipulación de datos (Data Manipulation Language) Permite a los usuarios llevar a cabo las tareas de consulta o manipulación.
Advertisements

SQL Sigla del nombre “Structured Query Language”.
Estadísticas en SQL Server Rocío Contreras Águila, Primer Semestre 2010.
Ejercicios Solemne 2 Parte 1
SQL BAJO EL ENTORNO PHP/MYSQL MI JUAN PABLO TORRES HERRERA UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA ENSENADA Mayo de 2005.
OPTIMIZACIÓN DEL RENDIMIENTO
Por: Ronald Toscano Pretelt
Consultas anidadas.
OPERACIONES DE RECUPERACIÓN. WHERE ciudad =‘Las Palmas’; de los suministradores Obtener el código y la situación de Las Palmas SELECT sn, situacion FROM.
MySQL M.C. Pedro Bello López.
Sentencia INSERT INTO Poblando tablas.
Mini curso: Inteligencia de negocios (Bodega y Minería de Datos) aplicación práctica Mauro Callejas Cuervo Ecuador, Mayo 2014 Sesión 2 – TALLER 2 Grupo.
…Tablas DDL.
Motores de almacenamiento en MySQL por Mario López y Juan A. Sánchez.
Subconsultas Avanzadas
6 Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados. Visualización de Datos de Varias Tablas Utilizando Uniones.
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
Integridad Referencial 1. Integridad referencial 2.
Administración de Bases de Datos
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 6 Subconsultas.
Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.
 ANGULO MENDEZ, Angelo  LEVANO CASTILLA, Carlos  PARDO FIGUEROA HERENCIA, Jhonatan  QUISPE ARCOS, Hans  RAMIREZ GAMBOA, Marlon.
Aprenda MySQL en 120 minutos Tutorial. Dirigido a...
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
Fernando Alonso Nicolás Serrano Acceso a Bases de Datos con Java JDBC 01 de Abril de 2008.
CAPITULO 4 Despliegue de Datos Desde Múltiples Tablas
Bases de datos:MYSQL. ¿Qué es una base de datos? Colección de datos persistentes, relacionados y estructurados. Persistentes: se almacenan en archivos.
Programación en Visual Basic Lección #8: SQL Por Antonio F. Huertas.
CONSULTAS SENCILLAS A LA BASE DE DATOS
SQL: Lenguaje de Interrogación Estructurado. Vistas Declaración de vista CREATE VIEW ( ) AS SELECT... Semántica Tabla virtual cuyo contenido es el resultado.
Bases de Datos 1 Prof. Daniel Obando Fuentes. USE USE {database}; Cambia el contexto de base de datos Es decir, dice cuál es la base de datos que se utilizará.
Tema 2: Base de datos relacionales
Características Objeto-Relacionales en Oracle Francisco Moreno Universidad Nacional.
LOGO Diseño e Implementación de un Sistema Telefónico Interactivo que me Permita Automatizar la Asignación y Consulta de Citas Médicas Expositoras: Cristina.
Structured Query Language (Lenguaje Estructurado de Consultas)
Expresiones algebraicas equivalentes
Eugenio Andrés Giraldo Bedoya Luisa Fernanda Gómez Correa 11-1.
PROCEDIMIENTOS ALMACENADOS Es una consulta almacenada en la base de datos en un servidor. Los P.A. Mejoran el Rendimiento Disminuyen el tráfico. Los P.A.
Más ejemplos en SQL Francisco Moreno. S sn snombre situacion ciudad S1 Salazar 20 Londres S2 Jaramillo 10 París S3 Bernal30 París S4 Caicedo 20 Londres.
Uso de los JOINS en MYSQL
SQL Sigla del nombre “Structured Query Language”.
BASES DE DATOS MySQL. BASE DE DATOS Estructuras o contenedores donde se almacena información siguiendo determinadas pautas de disposición y ordenación.
Tema 11 Bases de Datos y el Lenguaje SQL
Laboratorio de optimización de BD
JOIN EN MYSQL Bueno en esta presentación mostrare cosas acerca de los usos de la sentencia JOIN en mysql , mediante esta presentación planeo mostrar los.
MSSQL SERVER CURSO BÁSICO 1. CONCEPTOS BASICOS DE SQL. DESCRIPCIÓN DEL CURSO. Sesión 3: Índices Uso, Creación, Tipos, Eliminación LENGUAJE DE CONSULTAS.
HINTS ¿Cómo afectar el plan de ejecución? Por defecto, el SGBD tomará en cuenta el camino de ejecución (Execution Path) determinado por el optimizador.
Comandos DDL Los comandos DDL son las siglas de Data Definition Language, y se corresponde con el conjunto de órdenes que permiten definir las estructuras.
Modificando la estructura de tablas
SQL Lenguaje Estructurado de Consultas. Structured Query Lenguaje (SQL). Lenguaje de acceso a bases de datos. Proyecto de Investigación de IBM. La mayoria.
SQL es el lenguaje de comunicación entre el programa cliente y programa servidor; Oracle es un programa servidor, en el que está la base de datos propiamente.
SQL: DDL.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Structure Query Languaje SQL. Introducción a SQL El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por.
DLM Transact SQL Sesión II Recuperación de información.
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
DML Transact SQL Sesión VI Trabajando con subconsultas.
DML Transact SQL Sesión V Consultando múltiples tablas.
Lenguaje MySQL, DDL (Lenguaje de definición de datos) Ing. Linda Masias Morales.
Crear una tabla (create table - sp_tables - sp_columns - drop table) Para ver las tablas existentes creadas por los usuarios en una base de datos usamos.
Selección Condicionada de Filas Uso de la cláusula WHERE La cláusula WHERE restringe las columnas que retorna una consulta según la condición que se imponga.
Base de Datos Introducción
CONSULTAS SQL POSTGRES.
Structure Query Languaje
SQL Lenguaje de Consulta Estructurado
SQL AVANZADO saregune CC 2009.
SQL + PHP + HTML Prof. Martín Contreras.
Construcción de elementos de Software 4 MSc. Oscar Mauricio Salazar Ospina MSc Juan Camilo Jaramillo Alzate 15/05/2019Programación distribuida y paralela1.
Fundamentos de las Base de Datos. Contenido Que es una Base de Datos. La diferencia entre datos e informacion. Clasificacion de las base de datos. Importancia.
Transcripción de la presentación:

“Optimización de sentencias MySQL” jueves 26 de septiembre de 2013

Sobre mí Nombre: Óscar / angro Desarrollador PHP, MySQL, Java, Android... Co-fundador y programador de Friends of Azeroth.

MYSQL

Por qué se le subestima ● No se profundiza en él. ● Con un vistazo a la sentencia básica, se piensa que está controlado. ● Mala fama por culpa de malos códigos.

POTENCIAL ● Tablas con millones de registros. ● Joins de 3 tablas con millones de registros. ● Sentencias de 20 minutos reducidas a 20 segundos.

ÍNDICES (INDEX)

INDICES ● No muerden. ● Consumen poca memoria. ● Aceleran mucho. ● Obligatorios en campos usados en WHERE, ODER BY, etc. ● Evitarlos en los campo texto siempre que sea posible.

PRUEBAS - PREMISAS ● Tabla: CREATE TABLE tabla ( id int(11) NOT NULL AUTO_INCREMENT, nombre varchar(50) NOT NULL, edad int(11) NOT NULL, PRIMARY KEY (`id`), ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ● registros con “edad” aleatoria entre 1 y 100 ● Sentencia de prueba: SELECT * FROM tabla WHERE edad = 56; ● Servidor sin actividad.

PRUEBAS - RESULTADOS ● Número de registros recuperados: 655. ● Sin índice en “edad”: segundos ● Con índice en “edad”: segundos ● Reducción de tiempo 460 veces.

NÚMEROS / ENUMS

● Los enum son números por detrás. ● Si se puede elegir, siempre usar campos numéricos o enums. ● Ocupan menos en disco y en memoria que su equivalente en texto. ● Las búsquedas son mucho más rápidas que sobre texto.

EJEMPLO DE ELECCIÓN Tenemos una tabla con un campo estado_civil. Puede ser: 1. Campo texto: “soltero”, “casado”, etc. 2. Campo numérico: 1 - Soltero; 2 - Casado, etc. La 2, la mejor opción: ● Más rápida para buscar por estado_civil ● Ocupa menos memoria y disco. ● Evitamos errores de comparación con faltas de ortografía, mayúsculas, caracteres especiales, etc.

ELEGIR ENTRE ENUM O NÚMERO ● Enum para campos cuyas opciones no cambien en mucho tiempo. ● Número para cualquier campo que tenga opciones que pueda cambiar regularmente.

SUBCONSULTAS

PARA ENTENDERNOS SELECT * FROM tabla1 WHERE campo1 IN (SELECT campo2 FROM tabla2) SELECT * FROM tabla1, (SELECT * FROM tabla2 WHERE campo2 = 3) as t2 WHERE t2.campo2 = tabla1.campo1

SUBCONSULTAS ● Se deben evitar siempre que sea posible. ● Hay que partirse la cabeza para buscar una alternativa. ● Se pueden sustituir por left / right / inner join. ● Igual que con los índices, entre usar subconsultas o joins hay un abismo.

PRUEBAS - PREMISAS Tablas CREATE TABLE `tabla1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `campo1` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `campo1` (`campo1`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 CREATE TABLE `tabla2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `campo2` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `campo2` (`campo2`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ● Queremos sacar los registros de tabla1 cuyo campo1 esté en el campo2 de algún registro de tabla2 y además sea igual a 50 ● registros en cada tabla con campo1 aleatorio entre 1 y 100 SELECT * FROM tabla1 WHERE campo1 IN (SELECT campo2 FROM tabla2 WHERE campo2 = 50) SELECT DISTINCT tabla1.* FROM tabla1 LEFT JOIN tabla2 ON campo1 = campo2 WHERE campo2 = 50 SENTENCIAS

PRUEBAS - RESULTADOS ● Registros recuperdados: 60. ● Con subconsulta: 0, segundos. ● Con LEFT JOIN: 0, segundos. ● Reducción de tiempo 458 veces.

ORDER BY

● Cuidado con él, puede ralentizar mucho la consulta. ● Estudiar si no es mejor ordenarlos fuera de MySQL. ● Acompañado de un LIMIT normal, no suele haber problemas. ● Si el orden no es importante, no lo pongas nunca.

Gracias