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 (LUW)
Use The Index, Luke indexación en la base de datos IBM Db2 LUW 9.7-12.1.
- MySQL
Use The Index, Luke indexación en la base de datos MySQL. Los test se llevaron a cabo con MySQL 5.5-9.4.0.
- Oracle
Use The Index, Luke indexación en la base de datos Oracle. Los test se llevaron a cabo con Oracle 11g-23.9.
- PostgreSQL
Use The Index, Luke indexación en la base de datos PostgreSQL. Los test se llevaron a cabo con PostgreSQL 9.0 - 17.
- 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 - 2022.
¿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
Preface — ¿Porqué la indexación es una tarea del equipo de desarrollo?
Anatomía de un índice — ¿A qué se parece un índice?
Los nodos hojas — Una lista doblemente enlazada
El B-Tree — Es un árbol balanceado
Índices Lentos, Sección I — Dos ingredientes para hacer un índice lento
El filtro Where — Indexar para mejorar el rendimiento de una búsqueda
Los operadores de igualdad — La clave de la búsqueda Lookup
Llaves primarias — Verificar el uso de los índices
Llaves concatenadas — Índices multi-columna
Índices Lentos, Sección II — El primer ingrediente, reexaminado
Funciones — Usar funciones dentro del filtro
where
Búsqueda insensible a mayúsculas y minúsculas —
UPPER
yLOWER
Funciones definidas por el usuario — Restricciones de las funciones basadas en índices
Sobre-indexar — Evitar la redundancia
Variables Bind — Para seguridad y rendimiento
Buscar por rangos — Más allá de la igualdad
Mayor que, menor que y
BETWEEN
— El orden de las columnas, reexaminadoIndexar Filtros
LIKE
SQL —LIKE
no es para una búsqueda de texto completoÍndice Combinado — ¿Porqué no se puede usar un índice por cada columna?
Índices Parciales — Indexar los registros seleccionados
NULL
en la base de datos Oracle — Una curiosidad importanteNULL
dentro de los índices — Cada índice es un índice parcialRestricciones
NOT NULL
— afecta el uso de los índicesEmular índices parciales — usando funciones basados en índices
Condiciones Complicadas — Los anti-modelos más comunes
Fechas — Prestar especial atención a los tipos
DATE
Cadenas de caracteres numéricos — No mezclen los tipos
Mezclar columnas — usar filtros
where
redundantesLógica inteligente — La manera más inteligente para crear SQL lentos
Matemáticas — Las bases de datos no resuelven ecuaciones
Pruebas y escabilidad — Acerca del hardware
Volumen de datos — La venganza del viejo y rápido índice
Carga del sistema — Carga afecta tiempo de respuesta
Tiempo de respuesta y Response y ancho de banda — Escabilidad horizontal
La operación de unión (Join) — No está lento si está bien hecho
Loop anidados — Acerca del problema de selección N+1 en ORM
Hash join — Requiere un enfoque completamente diferente para indexar
Sort-Merge join — Como un cierre sobre dos conjuntos ordenados
Agrupación de datos — Para reducir IO
Filtros de predicados usados intencionalmente sobre índices — para afinar
LIKE
Solo Escanear Índices — Evitar el acceso a la tabla
Índices Organizados en Tablas (IOT) — Índices en cluster sin tablas
Ordenar y agrupar — Agregando
order by
: el tercer poderIndexar Order By — Interacciones de los filtros
where
ASC
/DESC
yNULL FIRST
/LAST
— cambiando el orden del índiceIndexar Group By — Agregando
group by
Resultados parciales — Paginar con eficiencia
Seleccionar los registros Top-N — si se requieren solamente los primeros registros
Devolver la próxima pagina — El “offset” y los métodos de búsqueda comparados
Window-Functions — Pagination using analytic queries
Insert, Delete y Update — Impactos de la indexación sobre los comandos DML