de Martin LE TARNEC.

E-Book sobre indexación y optimización de SQL


Un sitio que explica técnicas de indexación SQL a los desarrolladores, sin entrar en administración de bases de datos (BDD).

Una correcta indexación SQL es la técnica de optimización más efectiva y sin embargo, a menudo, se descuida durante el desarrollo. Use The Index, Luke! explica como indexar correctamente tablas SQL desde el nivel principiante y no se limita únicamente a herramientas ORM, como Hibernate.

Use The Index, Luke! es la edición web libre del libro Rendimiento SQL explicado. Si te gusta este sitio, considera hacerte con el libro. Échale también una ojeada a la tienda para encontrar otros artículos interesantes que sirven para mantener este sitio web.

Indexación SQL en MySQL, Oracle, SQL Server, etc.

Use The Index, Luke! explica como indexar tus tablas de forma agnóstica respecto a la BDD (las técnicas sirven para cualquiera de ellas). Pero además se incluyen notas que explican técnicas específicas para productos concretos, que se muestran de la siguiente forma:

DB2

Use The Index, Luke indexación en la base de datos IBM DB2 LUW 9.7-11.1.

MySQL

Use The Index, Luke indexación en la base de datos MySQL. Los test se llevaron a cabo con MySQL 5.5-5.7.

Oracle

Use The Index, Luke indexación en la base de datos Oracle. Los test se llevaron a cabo con Oracle 11g-12c.

PostgreSQL

Use The Index, Luke indexación en la base de datos PostgreSQL. Los test se llevaron a cabo con PostgreSQL 9.0+.

SQL Server

Use The Index, Luke indexación en la base de datos SQL Server. Los test se llevaron a cabo con SQL Server 2008R2+.

¿Tienes más preguntas sobre indexación SQL u optimización de BDD? No te preocupes. Echa un vistazo a mis servicios de formación y adaptación en http://winand.at.

Tabla de contenido

  1. Preface — ¿Porqué la indexación es una tarea del equipo de desarrollo?

  2. Anatomía de un índice — ¿A qué se parece un índice?

    1. Los nodos hojas — Una lista doblemente enlazada

    2. El B-Tree — Es un árbol balanceado

    3. Índices Lentos, Sección I — Dos ingredientes para hacer un índice lento

  3. El filtro Where — Indexar para mejorar el rendimiento de una búsqueda

    1. Los operadores de igualdad — La clave de la búsqueda Lookup

      1. Llaves primarias — Verificar el uso de los índices

      2. Llaves concatenadas — Índices multi-columna

      3. Índices Lentos, Sección II — El primer ingrediente, reexaminado

    2. Funciones — Usar funciones dentro del filtro where

      1. Búsqueda insensible a mayúsculas y minúsculasUPPER y LOWER

      2. Funciones definidas por el usuario — Restricciones de las funciones basadas en índices

      3. Sobre-indexar — Evitar la redundancia

    3. Variables Bind — Para seguridad y rendimiento

    4. Buscar por rangos — Más allá de la igualdad

      1. Mayor que, menor que y BETWEEN — El orden de las columnas, reexaminado

      2. Indexar Filtros LIKE SQLLIKE no es para una búsqueda de texto completo

      3. Índice Combinado — ¿Porqué no se puede usar un índice por cada columna?

    5. Índices Parciales — Indexar los registros seleccionados

    6. NULL en la base de datos Oracle — Una curiosidad importante

      1. NULL dentro de los índices — Cada índice es un índice parcial

      2. Restricciones NOT NULL — afecta el uso de los índices

      3. Emular índices parciales — usando funciones basados en índices

    7. Condiciones Complicadas — Los anti-modelos más comunes

      1. Fechas — Prestar especial atención a los tipos DATE

      2. Cadenas de caracteres numéricos — No mezclen los tipos

      3. Mezclar columnas — usar filtros where redundantes

      4. Lógica inteligente — La manera más inteligente para crear SQL lentos

      5. Matemáticas — Las bases de datos no resuelven ecuaciones

  4. Pruebas y escabilidad — Acerca del hardware

    1. Volumen de datos — La venganza del viejo y rápido índice

    2. Carga del sistema — Carga afecta tiempo de respuesta

    3. Tiempo de respuesta y Response y ancho de banda — Escabilidad horizontal

  5. La operación de unión (Join) — No está lento si está bien hecho

    1. Loop anidados — Acerca del problema de selección N+1 en ORM

    2. Hash join — Requiere un enfoque completamente diferente para indexar

    3. Sort-Merge join — Como un cierre sobre dos conjuntos ordenados

  6. Agrupación de datos — Para reducir IO

    1. Filtros de predicados usados intencionalmente sobre índices — para afinar LIKE

    2. Solo Escanear Índices — Evitar el acceso a la tabla

    3. Índices Organizados en Tablas (IOT) — Índices en cluster sin tablas

  7. Ordenar y agrupar — Agregando order by: el tercer poder

    1. Indexar Order By — Interacciones de los filtros where

    2. ASC/DESC y NULL FIRST/LAST — cambiando el orden del índice

    3. Indexar Group By — Agregando group by

  8. Resultados parciales — Paginar con eficiencia

    1. Seleccionar los registros Top-N — si se requieren solamente los primeros registros

    2. Devolver la próxima pagina — El “offset” y los métodos de búsqueda comparados

    3. Window-Functions — Pagination using analytic queries

  9. Insert, Delete y Update — Impactos de la indexación sobre los comandos DML

    1. Insert — no puede tomar directamente los beneficios de los índices

    2. Delete — usa los índices sobre los filtros where

    3. Update — no afecta todos los índices de la tabla

Acerca del autor

Foto de Markus Winand

Markus Winand enseña SQL eficiente, en casa y online. Mejora el tiempo de desarrollo utilizando SQL moderno y optimiza el tiempo de ejecución con indexación inteligente. Su libro Rendimiento SQL explicado se ha convertido en lectura obligada sobre el tema.

Adquiere tu libro en Amazon

Portada de “Rendimiento SQL explicado”: Ardilla corriendo en la hierba

La esencia del tuning de SQL en 200 páginas

Compra en Amazon
(solo en papel)

Libro y PDF también disponible en la tienda de Markus.

Contratar a Markus

La manera más rápida y fácil de beneficiarse de su extenso conocimiento y experiencia.
Aprende más »

“Use The Index, Luke” de Markus Winand se halla bajo licencia Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Aspectos legales | Contacto | SIN GARANTÍA | Marcas | Privacy | CC-BY-NC-ND 3.0 licencia