SYSTEM_TIME para TABLESAMPLE #
El módulo tsm_system_time proporciona el método de muestreo de tablas
SYSTEM_TIME, que se puede utilizar en la cláusula
TABLESAMPLE de un comando SELECT.
Este método de muestreo de tablas acepta un único argumento de coma flotante que representa el número máximo de milisegundos a dedicar a la lectura de la tabla. Esto te da control directo sobre cuánto tarda la consulta, al precio de que el tamaño de la muestra se vuelve difícil de predecir. La muestra resultante contendrá tantas filas como se hayan podido leer en el tiempo especificado, a menos que se haya leído toda la tabla antes.
Al igual que el método de muestreo integrado SYSTEM,
SYSTEM_TIME realiza muestreo a nivel de bloque, de modo
que la muestra no es completamente aleatoria sino que puede estar sujeta a efectos de
agrupamiento (clustering), especialmente si solo se selecciona un número pequeño de filas.
SYSTEM_TIME no admite
la cláusula REPEATABLE.
Este módulo se considera “trusted” (de confianza), es decir, puede ser
instalado por no superusuarios que tengan el privilegio CREATE
en la base de datos actual.
Aquí tienes un ejemplo de cómo seleccionar una muestra de una tabla con
SYSTEM_TIME. Primero instala la extensión:
CREATE EXTENSION tsm_system_time;
Luego puedes usarla en un comando SELECT, por ejemplo:
SELECT * FROM my_table TABLESAMPLE SYSTEM_TIME(1000);
Este comando devolverá una muestra de my_table tan grande
como pueda leer en 1 segundo (1000 milisegundos). Por supuesto, si toda la
tabla se puede leer en menos de 1 segundo, se devolverán todas sus filas.