Comparteix a través de


sp_createstats (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

Llama a la instrucción CREATE STATISTICS para crear estadísticas de columna única en columnas que aún no son la primera columna de un objeto de estadísticas. La creación de estadísticas de columna única aumenta el número de histogramas, lo que puede mejorar las estimaciones de cardinalidad, los planes de consulta y el rendimiento de las consultas. La primera columna de un objeto de estadísticas tiene un histograma; otras columnas no tienen un histograma.

sp_createstats es útil para aplicaciones como la prueba comparativa cuando los tiempos de ejecución de consultas son críticos y no pueden esperar a que el optimizador de consultas genere estadísticas de una sola columna. En la mayoría de los casos, no es necesario usar sp_createstats; el optimizador de consultas genera estadísticas de una sola columna según sea necesario para mejorar los planes de consulta cuando la AUTO_CREATE_STATISTICS opción está activada.

Para obtener más información sobre las estadísticas, vea Estadísticas. Para obtener más información sobre cómo generar estadísticas de una sola columna, consulte la AUTO_CREATE_STATISTICS opción en Opciones de ALTER DATABASE SET.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_createstats
    [ [ @indexonly = ] 'indexonly' ]
    [ , [ @fullscan = ] 'fullscan' ]
    [ , [ @norecompute = ] 'norecompute' ]
    [ , [ @incremental = ] 'incremental' ]
[ ; ]

Argumentos

[ @indexonly = ] 'indexonly'

Crea estadísticas solo en columnas que están en un índice existente y no son la primera columna de ninguna definición de índice. @indexonly es char(9), con un valor predeterminado de NO.

[ @fullscan = ] 'fullscan'

Usa la instrucción CREATE STATISTICS con la FULLSCAN opción . @fullscan es char(9), con un valor predeterminado de NO.

[ @norecompute = ] 'norecompute'

Usa la instrucción CREATE STATISTICS con la NORECOMPUTE opción . @norecompute es char(12), con un valor predeterminado de NO.

[ @incremental = ] 'incremental'

Usa la instrucción CREATE STATISTICS con la INCREMENTAL = ON opción . @incremental es char(12), con un valor predeterminado de NO.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Conjunto de resultados

Cada nuevo objeto de estadísticas tiene el mismo nombre que la columna en la que se crea.

Comentarios

sp_createstats no crea ni actualiza estadísticas en columnas que son la primera columna de un objeto de estadísticas existente. Esto incluye la primera columna de estadísticas creadas para índices, columnas con estadísticas de columna única generadas con AUTO_CREATE_STATISTICS la opción y la primera columna de estadísticas creadas con la CREATE STATISTICS instrucción . sp_createstats no crea estadísticas en las primeras columnas de índices deshabilitados a menos que esa columna se use en otro índice habilitado. sp_createstats no crea estadísticas en tablas con un índice agrupado deshabilitado.

Cuando la tabla contiene un conjunto de columnas, sp_createstats no crea estadísticas en columnas dispersas. Para obtener más información sobre los conjuntos de columnas y las columnas dispersas, consulte Uso de conjuntos de columnas y Uso de columnas dispersas.

Permisos

Requiere pertenencia al rol fijo de base de datos db_owner.

Ejemplos

A Crear estadísticas de columna única en todas las columnas coincidentes

En el siguiente ejemplo, se crean estadísticas de columna única en todas las columnas coincidentes de la base de datos actual.

EXEC sp_createstats;
GO

B. Crear estadísticas de columna única en todas las columnas de índice coincidentes

En el ejemplo siguiente se crean estadísticas de columna única en todas las columnas aptas que ya están en un índice y no son la primera columna del índice.

EXEC sp_createstats 'indexonly';
GO