පොකුරු සහ පොකුරු නොවන දර්ශකය ඇත්ත වශයෙන්ම අදහස් කරන්නේ කුමක්ද?


1132

මට ඩීබී සඳහා සීමිත නිරාවරණයක් ඇති අතර යෙදුම් ක්‍රමලේඛකයෙකු ලෙස ඩීබී පමණක් භාවිතා කර ඇත. මට Clusteredසහ දැන ගැනීමට අවශ්‍යයි Non clustered indexes. මම ගොග්ල් කළෙමි, මට හමු වූයේ:

පොකුරු දර්ශකය යනු වගුවේ වාර්තා භෞතිකව ගබඩා කර ඇති ආකාරය නැවත සකස් කරන විශේෂ වර්ගයේ දර්ශකයකි. එබැවින් වගුවට තිබිය හැක්කේ එක් පොකුරු දර්ශකයක් පමණි. පොකුරු දර්ශකයක පත්‍ර නෝඩ් වල දත්ත පිටු අඩංගු වේ. නොකැඩූ දර්ශකයක් යනු දර්ශකයේ තාර්කික අනුපිළිවෙල තැටියේ පේළි වල භෞතික ගබඩා අනුපිළිවෙලට නොගැලපෙන විශේෂ වර්ගයේ දර්ශකයකි. නොකැඩූ දර්ශකයක පත්‍ර නෝඩය දත්ත පිටු වලින් සමන්විත නොවේ. ඒ වෙනුවට, කොළ නෝඩ් වල දර්ශක පේළි අඩංගු වේ.

SO හි මා සොයාගත් දෙය නම් පොකුරු සහ පොකුරු නොවන දර්ශකයක් අතර ඇති වෙනස්කම් මොනවාද? .

යමෙකුට මෙය සරල ඉංග්‍රීසියෙන් පැහැදිලි කළ හැකිද?

Answers:


1133

පොකුරු දර්ශකයක් සමඟ පේළි භෞතිකව තැටියේ ගබඩා කර ඇත්තේ දර්ශකයේ ආකාරයටම ය. එබැවින් එක් පොකුරු දර්ශකයක් පමණක් තිබිය හැකිය.

පොකුරු නොවන දර්ශකයක් සමඟ භෞතික පේළි වෙත දර්ශක ඇති දෙවන ලැයිස්තුවක් ඇත. සෑම නව දර්ශකයක්ම නව වාර්තා ලිවීමට ගතවන කාලය වැඩි කළද ඔබට පොකුරු නොවන දර්ශක බොහොමයක් තිබිය හැකිය.

ඔබට සියලු තීරු ආපසු ලබා ගැනීමට අවශ්‍ය නම් පොකුරු දර්ශකයකින් කියවීම සාමාන්‍යයෙන් වේගවත් වේ. ඔබ මුලින්ම දර්ශකයට හා පසුව මේසයට යා යුතු නැත.

දත්ත නැවත සකස් කිරීමේ අවශ්‍යතාවයක් තිබේ නම්, පොකුරු දර්ශකයක් සහිත වගුවකට ලිවීම මන්දගාමී විය හැකිය.


44
"භෞතිකව" යන්නෙන් ඔබ අදහස් කරන්නේ කුමක්ද යන්න පැහැදිලි කළ යුතුය.
ස්පෙන්සර් රූපට්

146
භෞතිකව තැටියේ ගබඩා කර ඇති බිටු වල මෙන්
පීටර්

18
Msdn වෙත යොමු වන්න "ඔබ ප්‍රාථමික කේ අවහිරයක් නිර්මාණය කරන විට , මේසය මත පොකුරු දර්ශකයක් දැනටමත් නොපවතින්නේ නම් තීරුවේ හෝ තීරුවල අද්විතීය පොකුරු දර්ශකයක් ස්වයංක්‍රීයව නිර්මාණය වේ ", එයින් අදහස් වන්නේ එය එකම තීරුවක් විය යුතු නැති බවයි.
මින්ග්

49
Et එසේ නොවන්න. සියලුම දත්ත ගොනු ස්ථිර භෞතික තැටියක තැන්පත් කර ඇති බවට ගොනු සේවාදායකය නිසැකවම සහතික නොවේ. දත්ත ගොනුව තුළ පොකුරු දර්ශකයක් පිළිවෙලට ඇති බව පවා සත්‍ය නොවේ. මෙය එසේ නොවන තරමට තාර්කික ඛණ්ඩනය වීමේ උපාධිය වේ.
මාටින් ස්මිත්

45
මාටින් ස්මිත්ගේ කරුණ උපස්ථ කිරීම සඳහා ඉක්මන් අදහස් දැක්වීමක් - පොකුරු දර්ශක මඟින් තැටියේ අනුක්‍රමික ගබඩා කිරීම සහතික නොවේ. තැටියේ දත්ත තැන්පත් කර ඇති ස්ථානය හරියටම කළමනාකරණය කිරීම මෙහෙයුම් පද්ධතියේ කාර්යය මිස ඩීබීඑම්එස් නොවේ. නමුත් පොකුරු යතුර අනුව අයිතම සාමාන්‍යයෙන් ඇණවුම් කර ඇති බව එයින් ඇඟවෙයි. මෙයින් අදහස් කරන්නේ ඩීබී 10GB කින් වර්ධනය වුවහොත්, එම 10GB 5x2GB කුට්ටි තැටියේ විවිධ කොටස් මත තැබීමට මෙහෙයුම් පද්ධතිය තීරණය කළ හැකි බවයි. 10GB ආවරණය වන පොකුරු වගුවක් සෑම 2GB කැබැල්ලකම අනුපිළිවෙලින් ගබඩා කරනු ඇත, කෙසේ වෙතත් එම 2GB කුට්ටි අනුක්‍රමික නොවිය හැක.
blobbles

603

පොකුරු දර්ශකයක් යනු තැටියේ ඇත්ත වශයෙන්ම එකිනෙකට සමීප අගයන් ගබඩා කිරීමට ඔබ දත්ත ගබඩාවට පවසන බවයි. කිසියම් පරාසයක පොකුරු දර්ශක අගයන්ට වැටෙන වාර්තා වේගයෙන් පරිලෝකනය කිරීමේ / ලබා ගැනීමේ වාසිය මෙයට ඇත.

උදාහරණයක් ලෙස, ඔබට පාරිභෝගිකයා සහ ඇණවුම දෙකක් ඇත:

Customer
----------
ID
Name
Address

Order
----------
ID
CustomerID
Price

එක් විශේෂිත ගනුදෙනුකරුවකුගේ සියලුම ඇණවුම් ඉක්මනින් ලබා ගැනීමට ඔබට අවශ්‍ය නම්, ඇණවුම් වගුවේ “පාරිභෝගික අයිඩී” තීරුවේ පොකුරු දර්ශකයක් නිර්මාණය කිරීමට ඔබට අවශ්‍ය විය හැකිය. මේ ආකාරයට එකම පාරිභෝගික අයිඩී සහිත වාර්තා භෞතිකව එකිනෙකාට සමීපව තැටියේ (පොකුරු) ගබඩා කර තබනු ඇත.

PS පාරිභෝගික ගණුදෙනුකරුගේ දර්ශකය පැහැදිලිවම අද්විතීය නොවනු ඇත, එබැවින් ඔබට දර්ශකය “අද්විතීය” කිරීම සඳහා දෙවන ක්ෂේත්‍රයක් එක් කළ යුතුය, නැතහොත් දත්ත සමුදාය ඔබ වෙනුවෙන් හැසිරවීමට ඉඩ දිය යුතු නමුත් එය තවත් කතාවකි.

බහු දර්ශක සම්බන්ධයෙන්. ඔබට තිබිය හැක්කේ එක් වගුවකට එක් පොකුරු දර්ශකයක් පමණි, මන්ද මෙය දත්ත භෞතිකව සකසා ඇති ආකාරය නිර්වචනය කරයි. ඔබ ප්‍රතිසමයක් කැමති නම්, විශාල මේසයක් ඇති විශාල කාමරයක් ගැන සිතන්න. ඔබට මෙම වගු පේළි කිහිපයක් සෑදීමට හෝ විශාල සම්මන්ත්‍රණ වගුවක් සෑදීමට ඒවා සියල්ලම එකට ඇද ගත හැකිය, නමුත් එකවර ක්‍රම දෙකම නොවේ. වගුවකට වෙනත් දර්ශක තිබිය හැකි අතර, පසුව ඒවා පොකුරු දර්ශකයේ ඇතුළත් කිරීම් වෙත යොමු කරනු ඇති අතර එමඟින් සත්‍ය දත්ත සොයාගත හැක්කේ කොතැනින්දැයි කියනු ඇත.


4
CI සෑම විටම PK
mko

4
පොකුරු දර්ශකයක් සමඟ එය දර්ශකයේ හෝ මේසයේ සමීපව ගබඩා කර ඇති වාර්තා ද?
කැල්ටර්

5
Al කැල්ටර් මේසය. දර්ශකය අර්ථ දක්වා ඇත. නිදසුනක් ලෙස, සෙවීම සඳහා අංක ගණිතමය වශයෙන් කෙනෙකුට කළ හැකි වන පරිදි btree එකක් ඇණවුම් කරනු ලැබේ. පොකුරේ අදහස නම් නිශ්චිත දර්ශකයක ක්‍රියාකාරීත්වයට වගුව සපුරාලීමයි. පැහැදිලිව කිවහොත්, දර්ශකයේ මුලින් ඇති අනුපිළිවෙලට ගැලපෙන පරිදි වගුවේ වාර්තා නැවත සකස් කරනු ලැබේ .
FLGMwt

9
Al කැල්ටර් කොහෙත්ම නැහැ! ඇත්ත වශයෙන්ම, ලියකියවිලි සහ නමම නොමඟ යවන සුළුය. “පොකුරු දර්ශකයක්” තිබීම ඇත්ත වශයෙන්ම දර්ශකය සමඟ එතරම් සම්බන්ධයක් නැත. සංකල්පමය වශයෙන්, ඔබට සැබවින්ම ඇත්තේ "දර්ශකය x මත පොකුරු කොට ඇති වගුවකි ".
FLGMwt

3
@ JohnOrtizOrdoñez: ෂුවර්, ඔබ ඕනෑම, එසේ කිසිදු දී-පේළිය ගබඩා කර ඇති භාවිතා කළ හැකි XML, VARCHAR(MAX)හෝ, VARBINARY(MAX). එය සාමාන්යයෙන් අර්ථයෙන් පොකුරු දිනය ක්ෂේත්රය පිළිබඳ කරවන සටහන පළමු , එය ක්ලස්ටර් දර්ශකය දිනය වර්ග මත වඩාත් පොදු වන පරාසයක ස්කෑන්ස් සඳහා ඉතාමත් කාර්යක්ෂම ලෙස. වයි.එම්.එම්.වී.

317

SQL සේවාදායකයේ, පොකුරු සහ නොකැඩූ දර්ශක දෙකම පේළි-නැඹුරු ආචයනය B ගස් ලෙස සංවිධානය කර ඇත.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

( රූප මූලාශ්‍රය )

ක්ලස්ටර් දර්ශක හා ක්ලස්ටර් නොවන දර්ශක අතර ප්රධාන වෙනස වන්නේ ක්ලස්ටර් දර්ශකයේ කොළ මට්ටමේ බව ය මේසය. මෙයට ඇඟවුම් දෙකක් තිබේ.

  1. පොකුරු දර්ශක පත්‍ර පිටුවල ඇති පේළි සෑම විටම වගුවේ ඇති එක් එක් (විරල නොවන) තීරු සඳහා යමක් අඩංගු වේ (වටිනාකම හෝ සත්‍ය අගයට දර්ශකය).
  2. පොකුරු දර්ශකය යනු වගුවක මූලික පිටපතයි.

INCLUDEසියලුම යතුරු නොවන තීරු පැහැදිලිව ඇතුළත් කිරීම සඳහා (SQL Server 2005 සිට) වගන්තිය භාවිතා කිරීමෙන් පොකුරු නොවන දර්ශකවලට ලකුණු 1 කළ හැකි නමුත් ඒවා ද්විතීයික නිරූපණයන් වන අතර සෑම විටම දත්තවල තවත් පිටපතක් ඇත (වගුව ම).

CREATE TABLE T
(
A INT,
B INT,
C INT,
D INT
)

CREATE UNIQUE CLUSTERED INDEX ci ON T(A, B)
CREATE UNIQUE NONCLUSTERED INDEX nci ON T(A, B) INCLUDE (C, D)

ඉහත දර්ශක දෙක බොහෝ දුරට සමාන වේ. යතුරු තීරු සඳහා අගයන් අඩංගු ඉහළ මට්ටමේ දර්ශක පිටු සමඟA, B සහ පත්‍ර මට්ටමේ පිටු අඩංගු වේA, B, C, D

වගුවකට එක් පොකුරු දර්ශකයක් පමණක් තිබිය හැකිය, මන්ද දත්ත පේළි එක් අනුපිළිවෙලකට වර්ග කළ හැකි බැවිනි.

අන්තර්ජාලයෙන් SQL සේවාදායක පොත් වලින් ඉහත උපුටා දැක්වීම බොහෝ ව්‍යාකූලත්වයට හේතු වේ

මගේ මතය අනුව, එය වඩා හොඳ වචන මාලාවක් වනු ඇත.

මෙම ක්ලස්ටර් දර්ශකයේ කොළ මට්ටමේ පේළි නිසා වගුවට එකම ක්ලස්ටර් දර්ශකය ඇති විය හැකි මේසය පේළි.

පොතේ මාර්ගගත උපුටා දැක්වීම වැරදියි නමුත් පොකුරු නොවන සහ පොකුරු නොවන දර්ශක දෙකෙහි “වර්ග කිරීම” තාර්කික මිස භෞතික නොවන බව ඔබට පැහැදිලි විය යුතුය. සම්බන්ධිත ලැයිස්තුව අනුගමනය කිරීමෙන් ඔබ පත්‍ර මට්ටමින් පිටු කියවා පිටුවේ පේළි ස්ලට් අරා අනුපිළිවෙලින් කියවන්නේ නම්, ඔබ දර්ශක පේළි පිළිවෙලට පිළිවෙලට කියවනු ඇත, නමුත් භෞතිකව පිටු වර්ග කළ නොහැක. පොකුරු දර්ශකයක් සමඟ පේළි සෑම විටම දර්ශක යතුරට සමානව තැටියේ භෞතිකව ගබඩා වේ යන පොදු මතයයි .

මෙය විකාර ක්‍රියාත්මක කිරීමකි. උදාහරණයක් ලෙස, 4GB වගුවක් මැද පේළියක් ඇතුල් කළහොත් SQL සේවාදායකය එසේ නොවේ , අළුතින් ඇතුළත් කළ පේළියට ඉඩක් ලබා දීම සඳහා ගොනුවේ 2GB දත්ත පිටපත් කිරීමට .

ඒ වෙනුවට, පිටු බෙදීමක් සිදු වේ. පොකුරු සහ පොකුරු නොවන දර්ශක දෙකෙහි පත්‍ර මට්ටමේ ඇති සෑම පිටුවකම ලිපිනය ඇත (File: Page තාර්කික යතුරු අනුපිළිවෙලින් ඊළඟ සහ පෙර පිටුවේ ) ඇත. මෙම පිටු එකිනෙකට පරස්පර හෝ යතුරු අනුපිළිවෙලට අවශ්‍ය නොවේ.

උදා: සම්බන්ධිත පිටු දාමය විය හැකිය 1:2000 <-> 1:157 <-> 1:7053

පිටු බෙදීමක් සිදු වූ විට, ගොනු සමූහයේ ඕනෑම තැනක සිට නව පිටුවක් වෙන් කරනු ලැබේ (එක්කෝ මිශ්‍ර ප්‍රමාණයකින්, කුඩා වගු සඳහා හෝ එම වස්තුවට අයත් හිස් නොවන නිල ඇඳුමකට හෝ අලුතින් වෙන් කරන ලද ඒකාකාර ප්‍රමාණයට). ගොනු සමූහයට එකකට වඩා තිබේ නම් මෙය එකම ගොනුවක නොතිබිය හැකිය.

පරමාදර්ශී භෞතික අනුවාදයට වඩා තාර්කික අනුපිළිවෙල හා පරස්පරතාව වෙනස් වන තරම තාර්කික ඛණ්ඩනය වීමේ උපාධියයි.

තනි ගොනුවක් සමඟ අලුතින් සාදන ලද දත්ත ගබඩාවක, මම පහත සඳහන් දෑ ධාවනය කළෙමි.

CREATE TABLE T
  (
     X TINYINT NOT NULL,
     Y CHAR(3000) NULL
  );

CREATE CLUSTERED INDEX ix
  ON T(X);

GO

--Insert 100 rows with values 1 - 100 in random order
DECLARE @C1 AS CURSOR,
        @X  AS INT

SET @C1 = CURSOR FAST_FORWARD
FOR SELECT number
    FROM   master..spt_values
    WHERE  type = 'P'
           AND number BETWEEN 1 AND 100
    ORDER  BY CRYPT_GEN_RANDOM(4)

OPEN @C1;

FETCH NEXT FROM @C1 INTO @X;

WHILE @@FETCH_STATUS = 0
  BEGIN
      INSERT INTO T (X)
      VALUES        (@X);

      FETCH NEXT FROM @C1 INTO @X;
  END

ඉන්පසු පිටු පිරිසැලසුම පරීක්ෂා කරන්න

SELECT page_id,
       X,
       geometry::Point(page_id, X, 0).STBuffer(1)
FROM   T
       CROSS APPLY sys.fn_PhysLocCracker( %% physloc %% )
ORDER  BY page_id

ප්‍රති results ල සෑම තැනම විය. යතුරු අනුපිළිවෙලෙහි පළමු පේළිය (අගය 1 සමඟ - පහත ඊතලයක් සමඟ උද්දීපනය කර ඇත) අවසාන භෞතික පිටුවේ ආසන්න විය.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

තාර්කික අනුපිළිවෙල සහ භෞතික අනුපිළිවෙල අතර සහසම්බන්ධය වැඩි කිරීම සඳහා දර්ශකයක් නැවත ගොඩනැඟීම හෝ ප්‍රතිසංවිධානය කිරීම මගින් ඛණ්ඩනය අඩු කිරීම හෝ ඉවත් කිරීම කළ හැකිය.

ධාවනය කිරීමෙන් පසු

ALTER INDEX ix ON T REBUILD;

මට පහත සඳහන් දේ ලැබුණා

රූප විස්තරය මෙහි ඇතුළත් කරන්න

වගුවට පොකුරු දර්ශකයක් නොමැති නම් එය ගොඩවල් ලෙස හැඳින්වේ.

පොකුරු නොවන දර්ශක ගොඩවල් හෝ පොකුරු දර්ශකයක් මත ගොඩනගා ගත හැකිය. ඒවා සෑම විටම මූලික වගුව වෙත පේළි ස්ථානගත කිරීමක් අඩංගු වේ. සංචයක් සම්බන්ධයෙන් ගත් කල, මෙය භෞතික පේළි හඳුනාගැනීමක් (ඉවත් කිරීම) වන අතර එය සංරචක තුනකින් සමන්විත වේ (ගොනුව: පිටුව: තව්). පොකුරු දර්ශකයකදී, පේළි ස්ථානගත කිරීම තාර්කික ය (පොකුරු දර්ශක යතුර).

පොකුරු නොවන දර්ශකයට දැනටමත් ස්වාභාවිකවම සීඅයි යතුරු තීරුව (ය) එන්.සී.අයි යතුරු තීරු ලෙස ඇතුළත් වේ නම් හෝ දෙවන අවස්ථාව සඳහා INCLUDE -d තීරු ලෙස ඇතුළත් කර තිබේ නම් කිසිවක් එකතු නොවේ. එසේ නොමැතිනම්, අතුරුදහන් වූ සීඅයි යතුරු තීරුව නිශ්ශබ්දව එන්සීඅයි වෙත එකතු වේ.

SQL සේවාදායකය සෑම විටම යතුරු තීරු වර්ග දෙකම සඳහා සුවිශේෂී බව සහතික කරයි. කෙසේ වෙතත්, අද්විතීය ලෙස ප්‍රකාශයට පත් නොකරන ලද දර්ශක සඳහා මෙය බලාත්මක කරන යාන්ත්‍රණය දර්ශක වර්ග දෙක අතර වෙනස් වේ.

uniquifierපවත්නා පේළියක් අනුපිටපත් කරන ප්‍රධාන අගයන් සහිත ඕනෑම පේළි සඳහා පොකුරු දර්ශක එකතු වේ. මෙය නැගී එන පූර්ණ සංඛ්‍යාවක් පමණි.

පොකුරු නොවන දර්ශක සඳහා අද්විතීය SQL සේවාදායකය නිශ්ශබ්දව පේළි ලොකේටරය පොකුරු නොවන දර්ශක යතුරට එක් කරයි. මෙය සැබවින්ම අනුපිටපත් පමණක් නොව සියලුම පේළි සඳහා අදාළ වේ.

තීරු ගබඩා දර්ශක සඳහා පොකුරු එදිරිව පොකුරු නොවන නාමකරණය භාවිතා කරයි. SQL සේවාදායක තීරු ගබඩාවලට වැඩි දියුණු කිරීම් පත්‍රිකාවේ සඳහන් වේ

තීරු ගබඩා දත්ත කිසිදු යතුරක ඇත්ත වශයෙන්ම "පොකුරු" නොවූවත්, ප්‍රාථමික දර්ශකය පොකුරු දර්ශකයක් ලෙස සඳහන් කිරීමේ සාම්ප්‍රදායික SQL සේවාදායක සම්මුතිය රඳවා ගැනීමට අපි තීරණය කළෙමු.


8
@brainstorm ඔව් මම ඒ ගැන දන්නවා. බොහෝ විට එසේ වන්නේ මෙම එම්එස්ඩීඑන් පිටුවේ ඇති වාක්‍ය ඛණ්ඩය නිසා විය හැකි නමුත් එහි ඇති වාක්‍ය ඛණ්ඩය තරමක් නොමඟ යවන සුළු බව දැකීමට නම් ඔබ බිඳී යාමේ මාතෘකා
මාටින් ස්මිත්

12
ra බ්‍රේන්ස්ටෝම්: සමහර අසත්‍ය ප්‍රකාශ ශුභාරංචිය ලෙස පුනරාවර්තනය වන ආකාරය පුදුම සහගතය. පොකුරු පොකුරක් පෙන්නුම් කරන්නේ, අවම වශයෙන් අනුක්‍රමික කියවීම්වල දෘෂ්ටි කෝණයෙන් බැලූ විට, පේළි දර්ශකයේ භෞතිකව තැටියේ ගබඩා කර තිබීම “යෝග්‍ය” වනු ඇති නමුත් එය ඒවා ඇත්ත වශයෙන්ම සිදුවීමට හේතු වනු ඇතැයි පැවසීමෙන් දුරස්ථ හ cry කි. එවැනි ආකාරයකින් ගබඩා කළ යුතුය.
සුපර් කැට්

5
Ar මාටින් ස්මිත් ඔබේ පරීක්ෂණයේ ප්‍රති results ල මම ප්‍රතිනිෂ්පාදනය කර තහවුරු කර ඇත්තෙමි SQL Server 2014. 95%ආරම්භක ඇතුළත් කිරීමෙන් පසුව මට දර්ශකයේ ඛණ්ඩනය ලැබේ. පසු index rebuildකැබලි කිරීම විය 0%සහ වටිනාකම් නියෝග කර තිබේ. මම පුදුම වෙමි, අපට එය පැවසිය The only time the data rows in a table are stored in sorted order is when its clustered index fragmentation is 0හැකිද?
gotqn

8
Ar මාටින් ස්මිත් දැන්, සර්, මෙය පිළිතුරකි. ප්‍රතිචාර ලැයිස්තුවේ ඉහළින්ම එය දැකීමට මා කැමතිය, නමුත් SO යන විට “ඉක්මන් හා සරල” ඉහළට එයි.
වයිත්‍රාෆ්‍රා

5
An මනාචි මෙම පිළිතුර ලබා දුන්නේ මුල් ප්‍රශ්නය ඇසීමෙන් වසර 5 කට පසුවය. එහි අරමුණ වන්නේ එම පිළිතුරු වල නොමඟ යවන සුළු කරුණු නිවැරදි කිරීමයි. (දැන් අවුරුදු 8 ක් වයසැති) OP හි අපේක්ෂාවන් මගේ ප්‍රශ්නයක් නොවේ. අනෙක් පා readers කයින් පහළ මට්ටමේ දැක්මක් අගය කළ හැකිය.
මාටින් ස්මිත්

152

මෙය ඉතා පැරණි ප්‍රශ්නයක් බව මට වැටහී ඇත, නමුත් ඉහත සියුම් පිළිතුරු නිදර්ශනය කිරීම සඳහා ප්‍රතිසමයක් ඉදිරිපත් කිරීමට මම සිතුවෙමි.

CLUSTERED INDEX

ඔබ පොදු පුස්තකාලයකට ගියහොත්, පොත් සියල්ලම නිශ්චිත අනුපිළිවෙලකට සකස් කර ඇති බව ඔබට පෙනී යනු ඇත (බොහෝ දුරට ඩිවි දශම පද්ධතිය හෝ ඩීඩීඑස්). මෙය පොත්වල "පොකුරු දර්ශකයට" අනුරූප වේ . ඔබට අවශ්‍ය පොත සඳහා ඩීඩීඑස් # නම් 005.7565 F736s, ඔබ ආරම්භ කරන්නේ ලේබල් කර ඇති පොත් රාක්ක පේළියක් 001-099හෝ ඒ හා සමාන දෙයක් සොයා ගැනීමෙනි . (තොගයේ අවසානයේ ඇති මෙම එන්ඩ්කැප් ලකුණ දර්ශකයේ ඇති "අතරමැදි නෝඩයකට" අනුරූප වේ.) අවසානයේදී ඔබ ලේබල් කරන ලද විශේෂිත රාක්කයට සරඹ කරනු ඇත 005.7450 - 005.7600, පසුව ඔබ නිශ්චිත ඩීඩීඑස් # සමඟ පොත සොයා ගන්නා තෙක් ස්කෑන් කරනු ඇත. එම කරුණ ඔබ ඔබේ පොත සොයාගෙන ඇත.

නිර්වචනය නොකළ INDEX

නමුත් ඔබ ඔබේ පොතේ ඩීඩීඑස් # කටපාඩම් කර පුස්තකාලයට නොපැමිණියේ නම්, ඔබට සහාය වීමට දෙවන දර්ශකයක් අවශ්‍ය වේ. පැරණි දිනවල ඔබට පුස්තකාලයේ ඉදිරිපසින් "කාඩ් නාමාවලිය" නමින් හැඳින්වෙන අපූරු ලාච්චු කාර්යාංශයක් හමුවනු ඇත. එහි 3x5 කාඩ්පත් දහස් ගණනක් විය - සෑම පොතකටම එකක්, අකාරාදී පිළිවෙලට වර්ග කර ඇත (මාතෘකාව අනුව, සමහර විට). මෙය "පොකුරු නොවන දර්ශකයට" අනුරූප වේ . මෙම කාඩ්පත් නාමාවලි ධූරාවලි ව්‍යුහයක් තුළ සංවිධානය කර ඇති අතර එමඟින් සෑම ලාච්චුවකම එහි අඩංගු කාඩ්පත් පරාසය සමඟ ලේබල් කරනු ලැබේ ( Ka - Klනිදසුනක් ලෙස; එනම් "අතරමැදි නෝඩ්"). නැවත වරක්, ඔබ ඔබේ පොත සොයා ගන්නා තෙක් සරඹ කරනු ඇත, නමුත් පොකුරු දර්ශකයේ සත්‍ය පොත සොයාගත හැකි දර්ශක අංකයෙන් (ඩීඩීඑස් #). මේ අවස්ථාවේ දී, ඔබ එය සොයාගත් පසු (එනම්, “කොළ නෝඩ්”), ඔබට පොත ම නැත,

ඇත්ත වශයෙන්ම, පුස්තකාලයාධිපතිවරයා සියළුම කාඩ්පත් ඡායා පිටපත් කිරීම සහ වෙනම කාඩ් නාමාවලියක වෙනත් අනුපිළිවෙලකට වර්ග කිරීම වළක්වන්නේ නැත. .


2
පොකුරු නොවන දර්ශක සමඟ භාවිතා කළ හැකි "ඇතුළත්" තීරු විස්තර කිරීම සඳහා මට සමහර විට මෙම ප්‍රතිසම විස්තාරණය කළ හැකිය: කෙනෙකුට කාඩ්පත් නාමාවලියෙහි කාඩ්පතක් එක් පොතකට වඩා ඇතුළත් කළ හැකි යැයි සිතිය හැකිය, නමුත් ඒ වෙනුවට ප්‍රකාශයට පත් කරන ලද සියලුම ලැයිස්තුවක් පොතේ අනුවාදයන්, සංඛ්‍යාත්මකව ප්‍රකාශන දිනය අනුව සංවිධානය කර ඇත. “ඇතුළත් කළ තීරුවක” මෙන් මෙම තොරතුරු ගබඩා කර ඇත්තේ පත්‍ර මට්ටමින් පමණි (මේ අනුව පුස්තකාලයාධිපති විසින් නිර්මාණය කළ යුතු කාඩ්පත් ගණන අඩු කරයි).
kmote

1
විශිෂ්ට ප්‍රතිසමයක් - එය දෘශ්‍යමාන කිරීමට සැබවින්ම උපකාරී වේ!
ඩෙනිස්

72

පොකුරු සහ පොකුරු නොවන දර්ශකවල ලක්ෂණ කිහිපයක් පහත සොයා ගන්න:

පොකුරු දර්ශක

  1. පොකුරු දර්ශක යනු SQL වගුවක පේළි අද්විතීය ලෙස හඳුනා ගන්නා දර්ශක වේ.
  2. සෑම වගුවකටම හරියටම එක් පොකුරු දර්ශකයක් තිබිය හැකිය.
  3. ඔබට එක් තීරුවකට වඩා ආවරණය වන පරිදි පොකුරු දර්ශකයක් සෑදිය හැකිය. උදාහරණයක් ලෙස : create Index index_name(col1, col2, col.....).
  4. පෙරනිමියෙන්, ප්‍රාථමික යතුරක් සහිත තීරුවකට දැනටමත් පොකුරු දර්ශකයක් ඇත.

පොකුරු නොවන දර්ශක

  1. පොකුරු නොවන දර්ශක සරල දර්ශක මෙන් ය. ඒවා හුදෙක් දත්ත වේගයෙන් ලබා ගැනීම සඳහා භාවිතා කරයි. අද්විතීය දත්ත ඇති බවට විශ්වාස නැත.

35
පේදුරු 1. එක් සුළු නිවැරදි දර්ශකය වන්නේ ක්ලස්ටර් නොවන අවශ්යයෙන්ම විශිෂ්ඨ ලෙස ඉතා SQL වගුවේ පේළි හඳුනා. එය ප්‍රාථමික කේ
නයිජල්

4
Ig නයිජල්, ප්‍රාථමික කේ හෝ යුනික් ඉන්ඩෙක්ස්?
anar khalilov

50

ඉතා සරල, තාක්‍ෂණික නොවන නියමය නම් පොකුරු දර්ශක සාමාන්‍යයෙන් ඔබේ ප්‍රාථමික යතුර සඳහා භාවිතා කිරීමයි (හෝ, අවම වශයෙන් අද්විතීය තීරුවක්) සහ පොකුරු නොවන වෙනත් තත්වයන් සඳහා භාවිතා කිරීම (සමහර විට විදේශීය යතුරක්) . ඇත්ත වශයෙන්ම, SQL සේවාදායකය පෙරනිමියෙන් ඔබේ ප්‍රාථමික යතුරු තීරුවේ (ය) පොකුරු දර්ශකයක් නිර්මාණය කරයි. ඔබ ඉගෙන ගෙන ඇති පරිදි, පොකුරු දර්ශකය තැටියේ භෞතිකව වර්ග කර ඇති ආකාරය හා සම්බන්ධ වේ, එයින් අදහස් කරන්නේ එය බොහෝ අවස්ථාවන් සඳහා හොඳ සර්ව සම්පූර්ණ තේරීමක් බවයි.


47

පොකුරු දර්ශකය

පොකුරු දර්ශකයක් වගුවක ඩේටා හි භෞතික අනුපිළිවෙල තීරණය කරයි. මේ හේතුව නිසා වගුවකට ඇත්තේ පොකුරු දර්ශක 1 ක් පමණි.

  • " ශබ්ද කෝෂය " වෙනත් දර්ශකයක අවශ්‍යතාවයක් නැත, එය දැනටමත් වචන අනුව දර්ශකයයි

නොකැඩූ දර්ශකය

පොකුරු නොවන දර්ශකයක් පොතක ඇති දර්ශකයකට සමාන වේ. දත්ත එක් තැනක ගබඩා වේ. දර්ශකය වෙනත් ස්ථානයක ගබඩා කර ඇති අතර දර්ශකයේ දත්ත ගබඩා කරන ස්ථානයට දර්ශක ඇත. මේ හේතුව නිසා වගුවකට නොබැඳි දර්ශක 1 කට වඩා තිබේ.

  • " රසායන විද්‍යාව පොත" දෙස බැලීමේදී පරිච්ඡේදයේ පිහිටීම සඳහා වෙනම දර්ශකයක් ඇති අතර "END" හි පොදු වර්ඩ්ස් පිහිටීම පෙන්වන තවත් දර්ශකයක් තිබේ.

6

පොකුරු දර්ශකය

පොකුරු දර්ශක වගු තුළ දත්ත පේළි වර්ග කර ගබඩා කරයි හෝ ඒවායේ ප්‍රධාන අගයන් මත පදනම්ව බලන්න. මේවා දර්ශක අර්ථ දැක්වීමට ඇතුළත් කර ඇති තීරු වේ. වගුවකට එක් පොකුරු දර්ශකයක් පමණක් තිබිය හැකිය, මන්ද දත්ත පේළි එක් අනුපිළිවෙලකට වර්ග කළ හැකි බැවිනි.

වගුවක දත්ත පේළි පිළිවෙලට පිළිවෙලට ගබඩා කර ඇති එකම අවස්ථාව වන්නේ වගුවේ පොකුරු දර්ශකයක් අඩංගු වූ විට පමණි. වගුවකට පොකුරු දර්ශකයක් ඇති විට, වගුව පොකුරු වගුවක් ලෙස හැඳින්වේ. වගුවකට පොකුරු දර්ශකයක් නොමැති නම්, එහි දත්ත පේළි ගොඩගැසී ඇත්තේ අනුපිළිවෙලට නැති ව්‍යුහයක ය.

නොකැඩූ

නොකැඩූ දර්ශකවල දත්ත පේළි වලින් වෙන් වූ ව්‍යුහයක් ඇත. නොකැඩූ දර්ශකයක නොබැඳි දර්ශක යතුරු අගයන් අඩංගු වන අතර සෑම යතුරු අගය ඇතුළත් කිරීමකටම දත්ත අගය පේළියෙහි යතුරු අගය අඩංගු වේ. නොකැඩූ දර්ශකයක දර්ශක පේළියක සිට දත්ත පේළියක් දක්වා වූ දර්ශකය පේළි ස්ථානගත කිරීම ලෙස හැඳින්වේ. පේළි ස්ථානගත කිරීමේ ව්‍යුහය රඳා පවතින්නේ දත්ත පිටු ගොඩවල්වල හෝ පොකුරු වගුවක ගබඩා කර තිබේද යන්න මතය. සංචයක් සඳහා, පේළි ස්ථානගත කිරීම යනු පේළියට යොමු කිරීමකි. පොකුරු වගුවක් සඳහා, පේළි ලොකේටරය යනු පොකුරු දර්ශක යතුරයි.

පවත්නා දර්ශක යතුරු සීමාවන් පසුකර යාම සඳහා ඔබට නොකැඩූ තීරු, නොකැඩූ දර්ශකයේ පත්‍ර මට්ටමට එකතු කළ හැකි අතර, සම්පූර්ණයෙන්ම ආවරණය වූ, සුචිගත කළ විමසුම් ක්‍රියාත්මක කරන්න. වැඩි විස්තර සඳහා, ඇතුළත් කළ තීරු සමඟ දර්ශක සාදන්න බලන්න. දර්ශක යතුරු සීමාවන් පිළිබඳ විස්තර සඳහා SQL සේවාදායකය සඳහා උපරිම ධාරිතා පිරිවිතර බලන්න.

යොමුව: https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-designed


4

"පොකුරු දර්ශකය" පිළිබඳ පෙළපොත් අර්ථ දැක්වීමක් ඉදිරිපත් කිරීමට මට ඉඩ දෙන්න, එය 15.6.1 සිට දත්ත සමුදා පද්ධති: සම්පූර්ණ පොත :

මෙම දර්ශකයේ සෙවුම් යතුර සඳහා ස්ථාවර අගයක් ඇති සියලුම ටුපල් දළ වශයෙන් ඒවා රඳවා තබා ගත හැකි කොටස් කිහිපයක දිස්වන පරිදි, ගුණාංගයක දර්ශක වන හෝ පොකුරුකරණ දර්ශක ගැන ද අපට කතා කළ හැකිය.

නිර්වචනය අවබෝධ කර ගැනීම සඳහා, පෙළපොත මඟින් සපයන උදාහරණ 15.10 දෙස බලමු:

R(a,b)ගුණාංගයක් මත වර්ග කර aඑම අනුපිළිවෙලෙහි ගබඩා කර ඇති, කුට්ටි වලට ඇසුරුම් කරන ලද සම්බන්ධතාවයක් නිසැකවම පොකුරු කර ඇත. ලබා දී ඇති බැවින් දර්ශකය aයනු පොකුරු දර්ශකයකිa -value අ 1, එම අගය සමග සියලු tuples aඅඛණ්ඩව වේ. aරූප සටහන 15.14 හි යෝජනා කර ඇති පරිදි, අගය a1 අඩංගු පළමු හා අවසාන කොටස් සඳහා හැර, ඒවා කුට්ටි ලෙස ඇසුරුම් කර ඇත . කෙසේ වෙතත්, b හි දර්ශකයක් පොකුරු කිරීමක් විය නොහැක්කකි, මන්ද යත් b, අගයන් aහා bඉතා සමීපව සහසම්බන්ධ නොවන්නේ නම් ස්ථාවර- අගයක් සහිත ටුපල් ගොනුව පුරා පැතිරෙනු ඇත .

රූපය 15.14

අර්ථ දැක්වීම මඟින් දත්ත කුට්ටි බලාත්මක නොකරන බව සලකන්න තැටියේ පරස්පර විය යුතුය; එය පවසන්නේ සෙවුම් යතුර සහිත ටුපල් හැකි තරම් දත්ත කොටස් කිහිපයකට ඇසුරුම් කර ඇති බවයි.

ආශ්‍රිත සංකල්පයක් වන්නේ පොකුරු සම්බන්ධතාවයයි . සම්බන්ධතාවයක් “පොකුරු” වන්නේ එහි ටුපල් දළ වශයෙන් කුට්ටි කිහිපයකට ඇසුරුම් කළ හොත් එම ටුපල් රඳවා තබා ගත හැකිය. වෙනත් වචන වලින් කිවහොත්, තැටි වාරණ දෘෂ්ටි කෝණයකින්, එය විවිධ සම්බන්ධතාවයන්ගෙන් ටුපල් අඩංගු වේ නම්, එම සම්බන්ධතා පොකුරු කළ නොහැක (එනම්, එම සම්බන්ධතාවය වෙනත් තැටි කොටස් වලින් වෙනත් තැටි කොටස් වලින් මාරු කිරීමෙන් එවැනි සම්බන්ධතා ගබඩා කිරීම සඳහා වඩාත් ඇසුරුම් ක්‍රමයක් තිබේ. වත්මන් තැටි කොටසෙහි සම්බන්ධතාවයට අයත් නොවන ටුපල්ස්). පැහැදිලිවම, R(a,b)ඉහත උදාහරණ පොකුරු කර ඇත.

සංකල්ප දෙකක් එකට සම්බන්ධ කිරීම සඳහා, පොකුරු සම්බන්ධතාවයකට පොකුරු දර්ශකයක් සහ පොකුරු නොවන දර්ශකයක් තිබිය හැකිය. කෙසේ වෙතත්, පොකුරු නොවන සම්බන්ධතාවය සඳහා, සම්බන්ධතාවයේ මූලික යතුරට ඉහළින් දර්ශකය ගොඩනගා ඇත්නම් මිස පොකුරු දර්ශකය කළ නොහැක.

"පොකුරු" යනු වචනයක් ලෙස දත්ත සමුදා ගබඩාවේ සියලු වියුක්ත මට්ටම් හරහා අයාචිත තැපැල් කර ඇත (වියුක්ත කිරීමේ මට්ටම් තුනක්: ටුපල්, බ්ලොක්, ගොනුව). " පොකුරු ගොනුව " යනුවෙන් හැඳින්වෙන සංකල්පයක් , ගොනුවක් (කුට්ටි සමූහයක් සඳහා වියුක්ත කිරීමක් (තැටි කුට්ටි එකක් හෝ වැඩි ගණනක්) එක් සම්බන්ධතාවයකින් හෝ විවිධ සම්බන්ධතාවයන්ගෙන් ටුපල් අඩංගු වේද යන්න විස්තර කරයි. එය ගොනු මට්ටමේ පවතින බැවින් පොකුරු දර්ශක සංකල්පයට එය සම්බන්ධ නොවේ.

කෙසේ වෙතත්, සමහරක් ඉගැන්වීම් ද්‍රව්‍ය පොකුරු ගොනු අර්ථ දැක්වීම මත පදනම්ව පොකුරු දර්ශකය අර්ථ දැක්වීමට කැමතියි. දත්ත තැටි වාරණය හෝ ගොනුව අනුව පොකුරු සම්බන්ධතාවය අර්ථ දැක්වුවද, එම වර්ග දෙකේ අර්ථ දැක්වීම් පොකුරු සම්බන්ධතා මට්ටමට සමාන වේ. මෙම ඡේදයේ ඇති සබැඳියෙන්,

ගොනුවක ඇති ගුණාංග (ය) පිළිබඳ දර්ශකයක් පොකුරු දර්ශකයකි: A = a ආරෝපණ අගය සහිත සියලුම ටුපල් අනුපිළිවෙලින් (= අඛණ්ඩව) දත්ත ගොනුවේ ගබඩා වේ.

ටුපල් අඛණ්ඩව ගබඩා කිරීම සමාන වන්නේ “ටුපල් දළ වශයෙන් කුට්ටි කිහිපයකට ඇසුරුම් කර ඇති නිසා එම ටුපල් රඳවා තබා ගත හැකිය” (එක් ගොනුවක් ගැන කතා කිරීමේදී සුළු වෙනසක් ඇති අතර අනෙක තැටිය ගැන කතා කරයි). එයට හේතුව අඛණ්ඩව ටුපල් ගබඩා කිරීම “එම ටුපල් රඳවා තබා ගත හැකි තරම් දළ වශයෙන් කොටස් කිහිපයකට ඇසුරුම් කර” ගැනීමයි.


3

පොකුරු දර්ශකය: මේසයේ දැනටමත් පොකුරු දර්ශකයක් නොමැති නම් ප්‍රාථමික යතුරු අවහිරතා පොකුරු දර්ශකය ස්වයංක්‍රීයව නිර්මාණය කරයි. පොකුරු දර්ශකයේ සත්‍ය දත්ත දර්ශකයේ පත්‍ර මට්ටමින් ගබඩා කළ හැකිය.

පොකුරු නොවන දර්ශකය: පොකුරු නොවන දර්ශකයේ සත්‍ය දත්ත පත්‍ර නෝඩයේ කෙලින්ම සොයාගත නොහැක, ඒ වෙනුවට එය සොයා ගැනීමට අමතර පියවරක් ගත යුතුව ඇත්තේ එයට සත්‍ය දත්ත දෙසට යොමු වන පේළි ස්ථානගත කිරීමේ අගයන් පමණක් ඇති බැවිනි. පොකුරු නොවන දර්ශකය පොකුරු දර්ශකයක් ලෙස වර්ග කළ නොහැක. වගුවකට පොකුරු නොවන දර්ශක කිහිපයක් තිබිය හැකිය, ඇත්ත වශයෙන්ම එය අප භාවිතා කරන SQL සේවාදායක අනුවාදය මත රඳා පවතී. මූලික වශයෙන් SQL සේවාදායකය 2005 පොකුරු නොවන දර්ශක 249 ක් සඳහා ඉඩ ලබා දෙන අතර 2008, 2016 වැනි ඉහත සංස්කරණ සඳහා එය වගුවකට පොකුරු නොවන දර්ශක 999 ක් සඳහා ඉඩ ලබා දේ.


2

පොකුරු දර්ශකය - පොකුරු දර්ශකයක් මඟින් වගුවක භෞතිකව ගබඩා කර ඇති අනුපිළිවෙල අර්ථ දක්වයි. වගු දත්ත එකම ආකාරයකින් වර්ග කළ හැකිය, එබැවින් වගුවකට එක් පොකුරු දර්ශකයක් පමණක් තිබිය හැකිය. SQL සේවාදායකයේ, ප්‍රාථමික යතුරු බාධකය ස්වයංක්‍රීයව එම තීරුවේ පොකුරු දර්ශකයක් නිර්මාණය කරයි.

පොකුරු නොවන දර්ශකය- පොකුරු නොවන දර්ශකයක් වගුව තුළ ඇති භෞතික දත්ත වර්ග නොකරයි. ඇත්ත වශයෙන්ම, පොකුරු නොවන දර්ශකයක් එක් ස්ථානයක ගබඩා කර ඇති අතර වගු දත්ත වෙනත් ස්ථානයක ගබඩා කර ඇත. මෙය පොත් අන්තර්ගතය එක් ස්ථානයක සහ දර්ශකය වෙනත් ස්ථානයක පිහිටා ඇති පෙළ පොතකට සමානය. මෙය වගුවකට පොකුරු නොවන දර්ශක එකකට වඩා ලබා ගැනීමට ඉඩ සලසයි. වගුව තුළ දත්ත පොකුරු දර්ශකයකින් වර්ග කරනු ඇති බව මෙහිදී සඳහන් කිරීම වැදගත්ය. කෙසේ වෙතත්, පොකුරු නොවන දර්ශක දත්ත ඇතුළත නිශ්චිත අනුපිළිවෙලෙහි ගබඩා කර ඇත. දර්ශකයේ දර්ශක නිර්මාණය කර ඇති තීරු අගයන් සහ තීරු අගය අයත් වාර්තාවේ ලිපිනය අඩංගු වේ. දර්ශකය නිර්මාණය කරන ලද තීරුවකට එරෙහිව විමසුමක් නිකුත් කළ විට, දත්ත සමුදාය පළමුව දර්ශකයට ගොස් සොයා බලනු ඇත වගුවේ අනුරූප පේළියේ ලිපිනය. එය පසුව එම පේළි ලිපිනයට ගොස් වෙනත් තීරු අගයන් ලබා ගනී. පොකුරු නොවන දර්ශක පොකුරු දර්ශකවලට වඩා මන්දගාමී වන්නේ මෙම අතිරේක පියවර නිසා ය

පොකුරු සහ පොකුරු නොවන දර්ශකය අතර වෙනස්කම්

  1. වගුවකට එක් පොකුරු දර්ශකයක් පමණක් තිබිය හැකිය. කෙසේ වෙතත්, ඔබට තනි වගුවක පොකුරු නොවන දර්ශක කිහිපයක් සෑදිය හැකිය.
  2. පොකුරු දර්ශක වගු වර්ග කිරීම පමණි. එමනිසා, ඔවුන් අමතර ගබඩා පරිභෝජනය නොකරයි. පොකුරු නොවන දර්ශක වැඩි ගබඩා ඉඩ ප්‍රමාණයක් ඉල්ලා සත්‍ය වගුවෙන් වෙනම ස්ථානයක ගබඩා කර ඇත.
  3. පොකුරු දර්ශක පොකුරු නොවන දර්ශකවලට වඩා වේගවත් බැවින් ඒවාට අමතර බැලීමේ පියවරක් ඇතුළත් නොවේ.

වැඩි විස්තර සඳහා මෙම ලිපිය බලන්න.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.