Сейчас увидел странную для себя штуку:
репро
собственно мне непонятна следующая картина 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 тоже поведение
репро
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 тоже поведение