de Martin LE TARNEC.

Lo que cada desarrollador debería saber acerca de los rendimientos SQL


  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

  1. Planes de ejecución — Devolver y leer los planes de ejecución

    1. DB2 LUW : ObtenerOperacionesPredicados de acceso y de filtro

    2. MySQL : ObtenerOperacionesPredicados de acceso y de filtro

    3. Oracle : ObtenerOperacionesPredicados de acceso y de filtro

    4. PostgreSQL : ObtenerOperacionesPredicados de acceso y de filtro

    5. SQL Server : ObtenerOperacionesPredicados de acceso y de filtro

  2. Guía de los mitos — Mitos comunes y falsas creencias

    1. Índices pueden empeorar

    2. Primero el más selectivo

    3. Oracle no puede indexar NULL

    4. SQL dinámico es lento

  3. Esquema de prueba — Scripts de CREATE y INSERT

    DB2MySQLOraclePostgreSQLSQL Server

Acerca del autor

Foto de Markus Winand

Markus Winand es defensor del resurgimiento del SQL. Su misión es la de presentar a los desarrolladores la evolución de SQL en el siglo XXI. Es posible contratar a Markus según disponibilidad o como orador o consultor en winand.at.

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 | Privacidad y RGPD | CC-BY-NC-ND 3.0 licencia