Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 statistics column order  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
Сейчас увидел странную для себя штуку:

репро
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 тоже поведение
29 ноя 17, 12:36    [20991415]     Ответить | Цитировать Сообщить модератору
 Re: statistics column order  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
add:
еще сейчас погонял - меняет порядок только для кластеризованного индекса
На некластеризованных порядок такой же как порядок ключей индекса.
29 ноя 17, 12:42    [20991455]     Ответить | Цитировать Сообщить модератору
 Re: statistics column order  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
felix_ff,

https://connect.microsoft.com/SQLServer/Feedback/Details/1163126

а вообще да, порядок табличный
29 ноя 17, 12:58    [20991536]     Ответить | Цитировать Сообщить модератору
 Re: statistics column order  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
ааа рано тему запостил, надо було погуглить сначала.

бага уже зарегистрирована, но что то воз и ныне там :(
https://connect.microsoft.com/SQLServer/Feedback/Details/1163126
29 ноя 17, 12:59    [20991540]     Ответить | Цитировать Сообщить модератору
 Re: statistics column order  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
TaPaK,

ага опередил.
29 ноя 17, 13:00    [20991545]     Ответить | Цитировать Сообщить модератору
 Re: statistics column order  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
felix_ff,

а цель вообще этой выборки? или прст:)
29 ноя 17, 13:01    [20991554]     Ответить | Цитировать Сообщить модератору
 Re: statistics column order  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
TaPaK,

просто разбирался с статистикой на одной табличке и увидел что лыжи не едут порядок какой то не такой какой я ожидал увидеть.
29 ноя 17, 13:03    [20991564]     Ответить | Цитировать Сообщить модератору
 Re: statistics column order  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
felix_ff
TaPaK,

просто разбирался с статистикой на одной табличке и увидел что лыжи не едут порядок какой то не такой какой я ожидал увидеть.

ну фактически статистика правильная, а так да люди страдают :)
29 ноя 17, 13:07    [20991580]     Ответить | Цитировать Сообщить модератору
 Re: statistics column order  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
TaPaK,

проголосовал там но 21 голос - это просто крах
29 ноя 17, 13:08    [20991590]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить