Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Две одинаковых статистики по одному полю на одной таблице  [new]
стат_поле
Guest
Как ведет себя MSSQL, когда создаются две одинаковых статистики по одинаковым полям ?

select @@version
Microsoft SQL Server 2005 - 9.00.5000.00 (X64) 


CREATE TABLE [dbo].[Table1t](
                [a] [int] NULL,
                [b] [int] NULL,
                [c] [int] NULL
) ON [PRIMARY]

GO

INSERT INTO Table1t(a, b, c)
SELECT cast(100*RAND() AS INT),cast(100*RAND() AS INT),cast(100*RAND() AS INT)
GO 100


select * from table1t
where a = 10


Создалась статистика по полю "a" с именем _WA_Sys_00000001_716EF9CC

А теперь делаем:
CREATE NONCLUSTERED INDEX [ttt] ON [Table1t] 
(
	[a] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO


В результате имеем 2 статистики по полю a с наименованием _WA_Sys_00000001_716EF9CC и ttt.

Насколько это плохо?
И как выявлять такие вот автоматические созданные статистики до появления индекса и уже когда появился индекс?

Может есть скрипт поиска одинаковых статистик по одним и тем же полям?
8 июн 16, 17:23    [19272495]     Ответить | Цитировать Сообщить модератору
 Re: Две одинаковых статистики по одному полю на одной таблице  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
стат_поле,

Создалась статистика по полю "a" с именем _WA_Sys_00000001_716EF9CC

в смысле создалась? от селекта непорочного?
8 июн 16, 17:25    [19272513]     Ответить | Цитировать Сообщить модератору
 Re: Две одинаковых статистики по одному полю на одной таблице  [new]
стат_поле
Guest
TaPaK, да, создалась от селекта при выполнении на базе, до появления индекса.
8 июн 16, 17:27    [19272524]     Ответить | Цитировать Сообщить модератору
 Re: Две одинаковых статистики по одному полю на одной таблице  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
стат_поле,

однако :)
найти одинаковые можно, зачем их удалять - хз
ну и надо разбирать комбинированные статистики
SELECT 
	d.Name,	
	c.name AS column_name,
	COUNT(*)       
FROM 
	sys.stats AS	s  
INNER JOIN 
	sys.stats_columns AS sc   
ON 
	s.object_id = sc.object_id AND s.stats_id = sc.stats_id  
INNER JOIN 
	sys.columns AS c   
ON 
	sc.object_id = c.object_id AND c.column_id = sc.column_id  
INNER JOIN
	sys.objects	d
ON
	d.Object_id = c.object_id
GROUP BY 
	d.Name,
	c.name 	
HAVING 
	COUNT(*) > 1
ORDER BY 
	d.Name
8 июн 16, 17:55    [19272712]     Ответить | Цитировать Сообщить модератору
 Re: Две одинаковых статистики по одному полю на одной таблице  [new]
стат_поле
Guest
TaPaK, меня интересует практический смысл двух одинаковых статистик по одному и тому же полю.

Зачем они?

Не мешает ли это SQL при оптимизации запросов?

Если вот к примеру взять абстракционный случай:
одна статистика по полю A - не обновлялась 2 года.
вторая статиситика по полю А - обновляется постоянно.
8 июн 16, 18:21    [19272825]     Ответить | Цитировать Сообщить модератору
 Re: Две одинаковых статистики по одному полю на одной таблице  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
стат_поле,
можете на тестовом сервере проверить, какая статистика юзается: http://sqlblog.com/blogs/paul_white/archive/2011/09/21/how-to-find-the-statistics-used-to-compile-an-execution-plan.aspx

Мне кажется что сервер будет использовать более свежую
8 июн 16, 19:57    [19273139]     Ответить | Цитировать Сообщить модератору
 Re: Две одинаковых статистики по одному полю на одной таблице  [new]
Mr. X
Guest
стат_поле,

Практического смысла (пользы) в наличии двух одинаковых статистик нет.
Необходимо (особенно на больших таблицах) удалять полные дубликаты, тк на них тратятся ресурсы при обслуживании.
Аналогичная ситуация с индексами.
8 июн 16, 21:07    [19273364]     Ответить | Цитировать Сообщить модератору
 Re: Две одинаковых статистики по одному полю на одной таблице  [new]
tem2003
Member

Откуда: White Plains, NY
Сообщений: 18
стат_поле,
тут немного раскрыт ответ от Mr. X, но на инглише
8 июн 16, 23:45    [19273896]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить