Estimador de coste de índice y join

Estimaciones de coste al estilo System R: barrido secuencial frente a índice B+ (agrupado o no), y joins nested-loop, block nested-loop, hash y sort-merge — con I/O de páginas y un término CPU sencillo.

Acerca de esta herramienta

Compara accesos y joins de igualdad mediante E/S de páginas estimadas más un peso CPU ajustable. Modelo didáctico, no tiempos medidos ni planes de un motor SQL. Cambiar una entrada borra su resultado; vuelve a estimar. Pestaña y entradas se conservan al navegar y recargar.

Selección. N son filas, P páginas y la selectividad una fracción de 0 a 1. La igualdad única supone una fila y desactiva la selectividad. Escaneo: P E/S y N × CPU. La altura H incluye la primera hoja: E/S = H−1 + max(1, ceil(coincidencias / claves por hoja)) + lecturas de datos. Índice agrupado: ceil(coincidencias × P / N), como máximo P; en otro caso una lectura por coincidencia. CPU = (1,2 × coincidencias + H) × peso. Los campos desactivados se ignoran.

Joins. R permanece exterior, S interior. Salida ≈ filas R × filas S × selectividad. Bucles por página: Pᵣ + PᵣPₛ. Por bloques: Pᵣ + ceil(Pᵣ/(B−2))Pₛ. Un índice en S requiere H lecturas por fila exterior más una por fila de salida; no se modelan hojas de rango adicionales. Hash construye la relación menor con B−2 páginas y B−1 particiones uniformes. Cada nivel añade lectura y escritura de ambas relaciones; no se simula sesgo de claves.

Ordenación y CPU. La ordenación materializada crea ceil(P/B) secuencias y combina B−1 cada vez. Cada pasada cuesta 2P; sort-merge lee después ambas relaciones ordenadas. Sin fusionar la última pasada con el join, releer grupos de duplicados o escribir la salida. CPU es un peso heurístico: comparaciones en bucles, recorrido y coincidencias con índice, el doble de filas de entrada para hash y n log₂ n por relación al ordenar. Todos los joins cuentan también las filas producidas. Unidades abstractas equivalentes a una E/S de página, no milisegundos.

Cantidades 1–10⁹, búfer 3–10⁹, altura 1–8, CPU 0–10⁶. Estimaciones de coma flotante que pueden ser fraccionarias o aproximadas con cardinalidades grandes. Sin caché, histogramas, paralelismo ni búsqueda del orden. Gráfico opcional. Fuentes: ordenación Berkeley CS186 y joins.

Las entradas sin procesar, incluso inválidas o incompletas, se guardan localmente hasta 100000 caracteres serializados. Por encima del límite se conserva la copia anterior; descarga las entradas antes de recargar o salir de la página. La navegación interna conserva el borrador actual. Una recarga restaura las entradas guardadas y espera Estimar. Las estimaciones pequeñas distintas de cero y los costes muy grandes usan notación científica; estas estimaciones no son recuentos exactos.