Tema SQL
TABLESAMPLE
Leer un subconjunto aproximado de filas de una tabla para análisis rápidos o estadísticas.
Descripción
TABLESAMPLE BERNOULLI(p) o SYSTEM(p) (PostgreSQL) usa fracción o porcentaje; SYSTEM muestrea bloques, BERNOULLI filas. SQL Server TABLESAMPLE (n PERCENT) o ROWS. Resultado no es exactamente reproducible; no sustituye a un WHERE científico.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
-- PostgreSQL
SELECT * FROM ventas TABLESAMPLE BERNOULLI (0.5);
-- SQL Server
SELECT * FROM ventas TABLESAMPLE (1 PERCENT);
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Aproximación
- SYSTEM puede devolver menos o más filas de las esperadas según bloques.
- REPEATABLE
- SQL Server permite semilla para muestreo reproducible en la misma sesión.
Ejemplos
Ejemplo 1
SELECT AVG(importe)
FROM pedidos TABLESAMPLE SYSTEM (2)
WHERE fecha >= CURRENT_DATE - INTERVAL '1 year';
Ejemplo 2
SELECT COUNT(*) FROM big TABLESAMPLE BERNOULLI (1);
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.