Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

statistics column order

$
0
0
Сейчас увидел странную для себя штуку:

репро
USE tempdb;
GO

IF OBJECT_ID(N'[dbo].[tbl]', N'U') IS NOT NULL DROP TABLE [dbo].[tbl];
GO

CREATE TABLE [dbo].[tbl] (
      [ID] INT NOT NULL,
      [Name] SYSNAME,
      [Date] DATE,
      CONSTRAINT [PK] PRIMARY KEY CLUSTERED ([Date], [ID], [Name])
) ON [PRIMARY];
GO

CREATE STATISTICS [TESTSTATS] ON [dbo].[tbl] ([Date], [ID], [Name]);
GO

CREATE STATISTICS [TESTSTATS2] ON [dbo].[tbl] ([ID], [Name], [Date]);
GO

DECLARE @d DATE = '20180101';

WITH X AS (
SELECT @d AS [Date]
UNION ALL
SELECT DATEADD(DD, 1, X.[Date]) FROM X WHERE X.[Date] < '20250101'
)
INSERT INTO [dbo].[tbl] ([ID], [Name], [Date])
  SELECT 1, 'DEFAULT', X.[Date] FROM X OPTION (MAXRECURSION 0);
GO

UPDATE STATISTICS [dbo].[tbl] WITH FULLSCAN;

DBCC SHOW_STATISTICS (tbl, PK) WITH DENSITY_VECTOR
DBCC SHOW_STATISTICS (tbl, TESTSTATS) WITH DENSITY_VECTOR
DBCC SHOW_STATISTICS (tbl, TESTSTATS2) WITH DENSITY_VECTOR

SELECT s.[stats_id], s.[name], sc.[stats_column_id], c.[name]
FROM sys.stats s
    JOIN sys.stats_columns sc ON sc.[object_id] = s.[object_id] AND sc.[stats_id] = s.[stats_id]
        JOIN sys.columns c ON c.[object_id] = s.[object_id] and c.[column_id] = sc.[column_id]
WHERE s.[object_id] = OBJECT_ID('[dbo].[tbl]')
  AND s.[auto_created] = 0
ORDER BY s.[stats_id], sc.[stats_column_id]
GO

DROP TABLE [dbo].[tbl];
GO


собственно мне непонятна следующая картина dbcc показывает вектор для статистик [PK] и [TESTSTATS] в порядке Date, ID, Name
какого рожна sys.stats_columns для ручных статистик показывает порядок следования столбцов правильно а для статистики по индексу показывает порядок столбцов статистики как ID, Name, Date


Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64)
Oct 20 2015 15:36:27
Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

хотя попробовал и на 2016 тоже поведение

Viewing all articles
Browse latest Browse all 7251

Trending Articles