این مقاله در مورد چگونگی نامگذاری اشیای آمار که به طور خودکار در زمان اجرای کوئری ساخته می شوند می باشد. دوستانی که با مبحث آمار آشنایی ندارند می تونن به این دو لینک به عنوان پیش نیاز مراجعه کنند:
در ابتدا اجازه بدید یک جدول بدون ایندکس بسازیم و سپس چند کوئری رو اون اجرا کنیم:
[sql] USE master;
GO
CREATE DATABASE StatsTest;
GO
USE StatsTest;
GO
EXEC sp_dboption ‘StatsTest’, ‘auto create statistics’, ‘on’;
GO
CREATE TABLE t1 (c1 INT, c2 INT, c3 INT);
GO
INSERT INTO t1 VALUES (1, 1, 1);
INSERT INTO t1 VALUES (1, 1, 2);
INSERT INTO t1 VALUES (1, 1, 3);
GO [/sql]
|
بعد گزینه AUTO_CREATE_STATISTICS دیتابیس رو فعال می کنیم:
[sql]
ALTER DATABASE StatsTest
SET AUTO_CREATE_STATISTICS ON [/sql]
|
بعد کوئری زیر رو اجرا می کنیم:
[sql] SELECT * FROM t1 WHERE c3 < 2;
GO
SELECT [object_id], [name] FROM sys.stats
WHERE [object_id] = OBJECT_ID (‘t1’);
GO
object_id name
———– ————————–
2073058421 _WA_Sys_00000003_7B905C75 [/sql]
|
همونطوری که در خروجی می بینید یک شیء آمار با نام _WA_Sys_00000003_7B905C75 توسط Query Optimizer به طور خودکار تولید شده و علت اون هم مفید بودن وجود چنین آماری است و به همین دلیل است که فعال بودن گزینه AUTO_CREATE_STATISTICS توصیه می شود.
اما در مورد چگونگی نامگذاری باید بگم _WA_ دو حرف اول کلمه Washington است و علت انتخاب این اسم هم قرار داشتن تیم توسعه SQL Server در این شهر است. sys به معنی تولید خودکار این شی است. 00000003 یعنی آمار روی ستون سوم جدول ایجاد شده و 7B905C75 هم معادل هگزادسیمال آی دی جدول است.
اگر کوئری را به فرم زیر بنویسید یک شی آمار دوباره برای ستون شرکت کننده در شرط کوئری ساخته می شود:
[sql] SELECT * FROM t1 WHERE c1 < 2;
GO
SELECT [object_id], [name] FROM sys.stats
WHERE [object_id] = OBJECT_ID (‘t1’);
GO
object_id name
———– ————————–
2073058421 _WA_Sys_00000003_7B905C75
2073058421 _WA_Sys_00000001_7B905C75 [/sql]
|
همونطوری که می بینید شی آماری با همان اسم ایجاد شده فقط به جای 3 عدد 1 نشسته یعنی ستون اول (c1).اگه به قسمت Statistics جداولتون نگاه کنید احتمالاً اشیایی با نام هایی که با _WA_Sys_ شروع میشن رو میبینید:
امیدوارم مفید بوده باشد.
هیچوقت به داشتن سرکارگر عادت نکن
سپتامبر 2015، تورج عزیزی
4 دیدگاه
مجتبی شهریور
سلام
خسته نباشید
مقاله عالی بود بخصوص معرفی لینک پیش نیازها که بسیار کار خوبی هست که درک مقاله را راحت تر کرد …متشکرم
حمید ج. فرد
برای شروع عالی بود.
m
سلام مقالتون عالی بود
مهدی ربانی ذبیحی
سلام بسیار خوب و عالی بود با تشکر