Ir al contenido principal

TABLESAMPLE, o cómo obtener una muestra aleatoria de registros de una tabla

¿Alguna vez has necesitado obtener una muestra de datos totalmente aleatoria de tu base de datos? En SQL Server es posible hacerlo, mediante la cláusula TABLESAMPLE, que se aplica a la definición del origen de datos que vamos a recuperar con la cláusula FROM.

TABLESAMPLE nos permite indicar un número de filas o un porcentaje de filas a devolver, de la siguiente manera:

--devuelve el 10% de las filas totales
--(dependiendo del tamaño de los registros en la base de datos, no del número de filas).
SELECT *
FROM YourTable
TABLESAMPLE (10 PERCENT) 
--devuelve una muestra de 15 filas del conjunto de resultados
SELECT *
FROM YourTable
TABLESAMPLE (15 ROWS) 

Algunas consideraciones a la hora de usar TABLESAMPLE incluyen:
  • No se puede usar en la definición de vistas
  • No se puede usar en la definición de funciones de tabla inline
  • No se puede aplicar a tablas devueltas por funciones tipo tabla

Comentarios

Entradas populares de este blog

Aprendiendo a usar LEFT OUTER JOIN

En esta entrada pretendemos explicar los diferentes resultados obtenidos por distintas construcciones de consultas que, aparentemente, deberían producir el mismo conjunto de resultados. Así, veremos las diferencias entre filtrar los resultados de una query en la unión (Join) mediante condiciones ON y mediante cláusulas WHERE.

Variantes del SELECT COUNT con DISTINCT

Seguramente, muchos de vosotros habréis usado en innumerables ocasiones la función de T-SQL COUNT , que no hace sino devolver un número de registros: de una tabla, de un conjunto de resultados, etc... En una de sus aplicaciones, combinado con el DISTINCT -uno de los dos argumentos que admite- COUNT nos devuelve el número de valores únicos no nulos de la tabla o conjunto de resultados que estemos consultando. Pero ¡ojo! Cuidado con la sintaxis , o podemos obtener el valor equivocado sin darnos cuenta. No es lo mismo: SELECT COUNT (DISTINCT NombreCampo) FROM NombreTabla que: SELECT COUNT(*), DISTINCT NombreCampo FROM NombreTabla

Script para obtener el tamaño de todas las tablas de la base de datos

En algunas ocasiones podemos vernos con la necesidad de conocer qué tablas de nuestra base de datos están ocupando más espacio en disco. Por ejemplo, si disponemos de SQL Server Express , cuyas bases de datos están limitadas a 4GB o 10GB, según la versión que estemos usando -4, hasta 2005; 10, a partir de 2008-, aparte de usar las opciones de comprimir la base de datos, poner el log en el modo simple de recuperación o ajustar las políticas de crecimiento automático de nuestros ficheros, podemos necesitar averiguar qué tablas crecen más para tomar las decisiones oportunas.