এসকিউএল সার্ভার সূচক বনাম পরিসংখ্যান


13

মধ্যে পার্থক্য কি কি CREATE INDEXএবং CREATE STATISTICSযখন আমি প্রতিটি ব্যবহার করা উচিত?

উত্তর:


19

সূচকগুলি প্রকৃত ডেটা (ডেটা পৃষ্ঠাগুলি বা সূচী পৃষ্ঠাগুলি যে সূচকগুলির বিষয়ে আমরা কথা বলছি তার উপর নির্ভর করে) এবং পরিসংখ্যানগুলি ডেটা বিতরণ সঞ্চয় করে। অতএব, CREATE INDEXএকটি সূচক তৈরি করতে ডিডিএল হবে (ক্লাস্টারড, নন ক্ল্লাস্টার্ড, ইত্যাদি) এবং CREATE STATISTICSসারণির অভ্যন্তরে কলামগুলিতে পরিসংখ্যান তৈরি করার জন্য ডিডিএল।

আমি আপনাকে রিলেশনাল ডেটাগুলির এই দিকগুলি সম্পর্কে পড়ার পরামর্শ দিচ্ছি। নীচে কয়েকটা সূচনা, সূচনামূলক নিবন্ধ রয়েছে। এগুলি খুব বিস্তৃত বিষয় এবং তাই তাদের উপরের তথ্যগুলি খুব প্রশস্ত এবং খুব গভীরভাবে যেতে পারে। নীচে তাদের সাধারণ ধারণাটি পড়ুন এবং এগুলি উত্থাপিত হলে আরও নির্দিষ্ট প্রশ্ন জিজ্ঞাসা করুন।

টেবিল এবং ইনডেক্স প্রতিষ্ঠানের উপর BOL রেফারেন্স
ক্লাস্টার ইনডেক্স কাঠামো BOL রেফারেন্স
Nonclustered ইনডেক্স কাঠামো উপর BOL রেফারেন্স
SQL সার্ভার কেন্দ্রীয় ভূমিকা উপর ইনডেক্সে করতে
পরিসংখ্যান উপর BOL রেফারেন্স

এই দুটি অংশ ক্রিয়াতে দেখার জন্য এখানে একটি কার্যকারী উদাহরণ রয়েছে (ব্যাখ্যা করার জন্য মন্তব্য করা হয়েছে):

use testdb;
go

create table MyTable1
(
    id int identity(1, 1) not null,
    my_int_col int not null
);
go

insert into MyTable1(my_int_col)
values(1);
go 100

-- this statement will create a clustered index
-- on MyTable1.  The index key is the id field
-- but due to the nature of a clustered index
-- it will contain all of the table data
create clustered index MyTable1_CI
on MyTable1(id);
go


-- by default, SQL Server will create a statistics
-- on this index.  Here is proof.  We see a stat created
-- with the name of the index, and the consisting stat 
-- column of the index key column
select
    s.name as stats_name,
    c.name as column_name
from sys.stats s
inner join sys.stats_columns sc
on s.object_id = sc.object_id
and s.stats_id = sc.stats_id
inner join sys.columns c
on sc.object_id = c.object_id
and sc.column_id = c.column_id
where s.object_id = object_id('MyTable1');


-- here is a standalone statistics on a single column
create statistics MyTable1_MyIntCol
on MyTable1(my_int_col);
go

-- now look at the statistics that exist on the table.
-- we have the additional statistics that's not necessarily
-- corresponding to an index
select
    s.name as stats_name,
    c.name as column_name
from sys.stats s
inner join sys.stats_columns sc
on s.object_id = sc.object_id
and s.stats_id = sc.stats_id
inner join sys.columns c
on sc.object_id = c.object_id
and sc.column_id = c.column_id
where s.object_id = object_id('MyTable1');


-- what is a stat look like?  run DBCC SHOW_STATISTICS
-- to get a better idea of what is stored
dbcc show_statistics('MyTable1', 'MyTable1_CI');
go

পরিসংখ্যানগুলির পরীক্ষার নমুনার মতো দেখতে এখানে:

এখানে চিত্র বর্ণনা লিখুন

লক্ষ্য করুন যে পরিসংখ্যানগুলি ডেটা বিতরণের সংযোজন। তারা এসকিউএল সার্ভারকে একটি অনুকূল পরিকল্পনা নির্ধারণ করতে সহায়তা করে। এর একটি ভাল উদাহরণ, কল্পনা করুন আপনি একটি ভারী বস্তু জীবনে যাচ্ছেন। যদি আপনি জানতেন যে সেই ওজনটি যেহেতু সেখানে একটি ওজন চিহ্নিত করছে, তবে আপনি উত্তোলনের সর্বোত্তম উপায় এবং কোনটি পেশী দিয়ে তা নির্ধারণ করতে পারেন। এটি পরিসংখ্যানগুলির সাথে এসকিউএল সার্ভার কী করে তা সাজান।

-- create a nonclustered index
-- with the key column as my_int_col
create index IX_MyTable1_MyIntCol
on MyTable1(my_int_col);
go

-- let's look at this index
select
    object_name(object_id) as object_name,
    name as index_name,
    index_id,
    type_desc,
    is_unique,
    fill_factor
from sys.indexes
where name = 'IX_MyTable1_MyIntCol';

-- now let's see some physical aspects
-- of this particular index
-- (I retrieved index_id from the above query)
select *
from sys.dm_db_index_physical_stats
(
    db_id('TestDB'),
    object_id('MyTable1'),
    4,
    null,
    'detailed'
);

আমরা উপরের উদাহরণ থেকে দেখতে পারি যে সূচীতে আসলে ডেটা রয়েছে (সূচীর ধরণের উপর নির্ভর করে পাতার পৃষ্ঠাগুলি আলাদা হবে)।

এই পোস্টটি এই দুটি বৃহত দিক এসকিউএল সার্ভারের খুব খুব সংক্ষিপ্ত বিবরণ দেখিয়েছে । এই উভয়ই অধ্যায় এবং বই নিতে পারে। কিছু উল্লেখ পড়ুন এবং তারপরে আপনার আরও ভাল উপলব্ধি হবে।


1
আমি জানি এটি একটি পুরানো পোস্ট তবে এটি লক্ষণীয় মনে করি যে একটি সূচি তৈরি করা (বেশিরভাগ ক্ষেত্রে) স্বয়ংক্রিয়ভাবে সূচকের পরিসংখ্যান তৈরি করে। পরিসংখ্যান তৈরির ক্ষেত্রেও একই কথা বলা যায় না।
স্টিভ ম্যাঙ্গামেলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.