এসকিউএলে একটি সূচক কী?


440

এসকিউএলে একটি সূচক কী ? আপনি ব্যাখ্যা বা স্পষ্টভাবে বুঝতে রেফারেন্স করতে পারেন?

কোথায় আমাকে একটি সূচক ব্যবহার করা উচিত?

উত্তর:


377

ডাটাবেসে অনুসন্ধান দ্রুত করতে একটি সূচক ব্যবহার করা হয়। মাইএসকিউএল-র বিষয়টিতে কিছু ভাল ডকুমেন্টেশন রয়েছে (যা অন্যান্য এসকিউএল সার্ভারের জন্যও প্রাসঙ্গিক): http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

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

সূচকটিও একটি UNIQUEসূচক হতে পারে , যার অর্থ এই যে কলামটিতে আপনার সদৃশ মান থাকতে পারে না বা PRIMARY KEYকিছু স্টোরেজ ইঞ্জিনে এটি সংজ্ঞায়িত করে যেখানে ডাটাবেস ফাইলটিতে মানটি সংরক্ষণ করা হয় is

মাইএসকিউএল এ আপনি EXPLAINআপনার SELECTবিবৃতিটির সামনে ব্যবহার করতে পারেন আপনার জিজ্ঞাসাটি কোনও সূচক ব্যবহার করবে কিনা তা দেখতে। সমস্যা সমাধানের পারফরম্যান্স সমস্যার জন্য এটি একটি ভাল শুরু। এখানে আরও পড়ুন: http://dev.mysql.com/doc/refman/5.0/en/explain.html


"সূচকটিও একটি অনন্য সূচক হতে পারে ..." কেবল আপনার সাথে নিশ্চিত করার জন্য, এর অর্থ কি সূচকটি অ-ইউনিক হতে পারে? আমি সর্বদা এর অনন্য মনে করতাম। আমি এসকিউএল থেকে বেশ নতুন, আমাকে ক্ষমা করুন
ড্যানিয়েল কর্নিয়াডি

@ ড্যানিয়েলকর্ণিয়াডি বেশিরভাগ সূচী অনন্য নয়। আমার কাছে একটি ব্যবহারকারীর ডাটাবেস থাকতে পারে এবং গথেনবুর্গের প্রত্যেকের জন্য জিজ্ঞাসা করতে চাই। "শহর" ক্ষেত্রের একটি সূচী আমার জিজ্ঞাসাকে ত্বরান্বিত করবে। তবে গোথেনবার্গে 1 জনেরও বেশি ব্যবহারকারী বাস করছেন তাই সূচকটি অনন্য be
এমিল বিক্রষ্টম

174

একটি ক্লাস্টার্ড সূচক ফোন বইয়ের বিষয়বস্তুর মতো। আপনি 'হিলডিচ, ডেভিড' বইটি খুলতে পারেন এবং একে অপরের পাশে 'হিলডিচ'-এর সমস্ত তথ্যের সন্ধান করতে পারেন। এখানে ক্লাস্টারড ইনডেক্সের কীগুলি হ'ল (শেষ নাম, প্রথম নাম)।

এটি ক্লাস্টারযুক্ত সূচকগুলি পরিসীমা ভিত্তিক প্রশ্নের ভিত্তিতে প্রচুর ডেটা পুনরুদ্ধারের জন্য দুর্দান্ত করে তোলে যেহেতু সমস্ত ডেটা একে অপরের পাশে অবস্থিত।

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

একটি ক্লাস্টারবিহীন সূচক আলাদা হয় যে আপনি তাদের অনেকগুলি থাকতে পারেন এবং তারা ক্লাস্টারড ইনডেক্সের ডেটাতে নির্দেশ করে। আপনার যেমন উদাহরণস্বরূপ একটি ফোন বইয়ের পিছনে একটি ক্লাস্টারযুক্ত সূচক থাকতে পারে যা কী (কী, ঠিকানা) রয়েছে

কল্পনা করুন আপনি যদি 'লন্ডনে' বাস করেন এমন সমস্ত লোকের জন্য ফোন বইয়ের মাধ্যমে অনুসন্ধান করতে চান - কেবল ক্লাস্টারড সূচী সহ আপনাকে ক্লাস্টারড ইনডেক্সের কীটি চালু থাকার পরে ফোন বইয়ের প্রতিটি আইটেম সন্ধান করতে হবে (শেষ নাম, প্রথম নাম) এবং ফলস্বরূপ লন্ডনে বসবাসকারী লোকেরা এন্ডেক্সে এলোমেলোভাবে ছড়িয়ে পড়ে।

আপনার যদি (শহরে) ক্লাস্টারবিহীন সূচক থাকে তবে এই প্রশ্নগুলি আরও অনেক দ্রুত সম্পাদন করা যেতে পারে।

আশা করি এইটি কাজ করবে!


151

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

আরও এখানে


2
আমি "উপমা" ব্যবহার করে জিনিসগুলি ব্যাখ্যা করার জন্য অভিজ্ঞ ছেলেদের প্রশংসা করি। +1 টি
SNR

82

অনুসন্ধানগুলির কার্য সম্পাদনের গতি বাড়ানোর জন্য একটি সূচক ব্যবহার করা হয়। এটি দেখার জন্য / স্ক্যান করতে হবে এমন ডাটাবেস ডেটা পৃষ্ঠাগুলির সংখ্যা হ্রাস করে এটি করে।

এসকিউএল সার্ভারে, একটি ক্লাস্টার্ড সূচক কোনও সারণীতে ডেটার দৈহিক ক্রম নির্ধারণ করে। টেবিলের জন্য কেবলমাত্র একটি ক্লাস্টারড ইনডেক্স থাকতে পারে (ক্লাস্টারড ইনডেক্স টেবিলটি) কোনও টেবিলের অন্য সমস্ত সূচকে অ-ক্লাস্টার হিসাবে অভিহিত করা হয়।


49

সূচকগুলি দ্রুত ডেটা সন্ধান করার জন্য

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

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

সূচকের মূল বিষয়গুলি
ক্লাস্টার্ড এবং অ-ক্লাস্টারযুক্ত সূচিগুলি
অনন্য এবং অ-স্বতন্ত্র
সূচকগুলি সূচকের সুবিধা এবং অসুবিধা


সমস্ত উত্তরগুলি পড়ার ফলে আমি অবাক হয়েছি কেন সব কিছুকেই সূচক নয়। অসুবিধাগুলিযুক্ত লিঙ্কটি অন্তর্ভুক্ত করার জন্য +1।
লক্ষী গার্গ

@ লক্ষ্যাগার্গ কখনও কখনও অপ্রয়োজনীয় ইনডেক্সিংও ক্যোয়ারির সঞ্চালনের সময়কে ধীর করতে পারে, তাই আমাদের সবকিছু সূচী করার চেষ্টা করা উচিত নয়। ঠিক যেমন প্রতিটি কিছুর নিজস্ব মতামত রয়েছে।
গৌরব রাজদেও

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

23

সাধারণ সূচকে ভাল হয় B-tree। দুটি ধরণের সূচক রয়েছে: ক্লাস্টারড এবং অ ক্ল্লাস্টার্ড।

ক্লাস্টারড ইনডেক্স সারিগুলির একটি শারীরিক ক্রম তৈরি করে (এটি কেবলমাত্র এক হতে পারে এবং বেশিরভাগ ক্ষেত্রে এটি একটি প্রাথমিক কীও হয় - আপনি যদি টেবিলে প্রাথমিক কী তৈরি করেন তবে আপনি এই টেবিলটিতেও ক্লাস্টারড সূচক তৈরি করেন)।

নন ক্ল্লাস্টারড ইনডেক্সও বাইনারি ট্রি তবে এটি সারিগুলির একটি শারীরিক ক্রম তৈরি করে না। সুতরাং ননক্র্লাস্টারড সূচকের পাত নোডগুলিতে পিকে (এটি উপস্থিত থাকলে) বা সারি সূচক থাকে।

সূচীগুলি অনুসন্ধানের গতি বাড়াতে ব্যবহৃত হয়। কারণ জটিলতা ও (লগ এন) এর। সূচকগুলি খুব বড় এবং আকর্ষণীয় বিষয়। আমি বলতে পারি যে বৃহত ডাটাবেসে সূচী তৈরি করা কখনও কখনও কখনও কখনও কখনও কখনও কখনও কখনও কখনও কখনও কখনও কখনও কখনও কখনও কখনও কখনও কখনও কখনও কখনও কখনও থাকে।


6
সাধারণভাবে, এটি বাইনারি গাছের চেয়ে একটি খ-গাছ।
মিচ গম

সুতরাং, সূচকগুলি স্ব-ব্যালেন্সিং গাছ ব্যবহার করে, প্রতিবার আপনি যখন একটি সারি যুক্ত / মুছে ফেলেন তখন এটি নিজেই ভারসাম্য বজায় রাখবে - সন্নিবেশ / মুছে ফেলা আরও ব্যয়বহুল ... সঠিক?
ডেভিড রেফেলি

20

INDEXES - সহজে ডেটা খুঁজে

UNIQUE INDEX - সদৃশ মান অনুমোদিত নয়

সিনট্যাক্স জন্য INDEX

CREATE INDEX INDEX_NAME ON TABLE_NAME(COLUMN);

সিনট্যাক্স জন্য UNIQUE INDEX

CREATE UNIQUE INDEX INDEX_NAME ON TABLE_NAME(COLUMN);

13

প্রথমে আমাদের বুঝতে হবে কীভাবে স্বাভাবিক (ইনডেক্সিং ছাড়াই) ক্যোয়ারি চলে। এটি মূলত প্রতিটি সারি একের পর এক অতিক্রম করে এবং এটি যখন ফিরে আসে সেই ডেটা সন্ধান করে। নীচের চিত্রটি দেখুন। (এই চিত্রটি এই ভিডিও থেকে নেওয়া হয়েছে ।)

ইনডেক্সিং ছাড়াই সুতরাং ধরুন কোয়েরিটি 50 খুঁজে বের করতে হবে, এটি লিনিয়ার অনুসন্ধান হিসাবে 49 টি রেকর্ড পড়তে হবে।

নীচের চিত্রটি দেখুন। (এই চিত্রটি এই ভিডিও থেকে নেওয়া হয়েছে )

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

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


12

আইএনডিএক্স একটি কর্মক্ষমতা অপ্টিমাইজেশন কৌশল যা ডেটা পুনরুদ্ধার প্রক্রিয়াটিকে গতি দেয়। এটি একটি অবিরাম ডাটা স্ট্রাকচার যা কোনও সারণীর (বা দেখুন) এর সাথে সম্পর্কিত যা এই টেবিল (বা দেখুন) থেকে ডেটা পুনরুদ্ধার করার সময় কার্যকারিতা বাড়িয়ে তুলবে।

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

আপনি স্পষ্ট এবং নির্ভরযোগ্য উপায়ে SQL-সূচকগুলির জন্য সঠিক তথ্য পাবেন: এই লিঙ্কগুলি অনুসরণ করুন:

  1. কনিকট-ভিত্তিক বোঝার জন্য: http://dotnetauthorities.blogspot.in/2013/12/ মাইক্রোসফ্ট- এসকিউএল- সার্ভার- প্রশিক্ষণ- অনলাইন-লার্নিং -ক্লাসস- ইনডেক্স- ওভারভিউ- এবং- অপ্টিমাইজেশনস html
  2. প্রয়োগ-ভিত্তিক বোঝার জন্য: http://dotnetauthorities.blogspot.in/2013/12/Mic Microsoft - SQL - Server - Training - Online - Learning - Clays - INDEX - Creation - Deletetion - Optimizations.html

6

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


6

আপনি যদি এসকিউএল সার্ভার ব্যবহার করেন তবে অন্যতম সেরা সংস্থান হ'ল এটি নিজস্ব বই অনলাইন যা ইনস্টলের সাথে আসে! এটি যে কোনও প্রথম স্থান আমি কোনও এসকিউএল সার্ভার সম্পর্কিত বিষয়গুলির জন্য উল্লেখ করব।

যদি এটি ব্যবহারিক হয় তবে "আমি এটি কীভাবে করব?" ধরণের প্রশ্ন, তবে স্ট্যাকওভারফ্লো জিজ্ঞাসা করার জন্য আরও ভাল জায়গা হবে।

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


0

একটি সূচক একটি on-disk structure associated with a table or view that speeds retrieval of rows from the table or view। একটি সূচীতে সারণী বা দৃশ্যে এক বা একাধিক কলাম থেকে তৈরি কী রয়েছে। এই কীগুলি একটি স্ট্রাকচার (বি-ট্রি) এ সংরক্ষণ করা হয় যা এসকিউএল সার্ভারকে মূল ও মানগুলি সম্পর্কিত এবং সারিগুলি দ্রুত এবং দক্ষতার সাথে সন্ধান করতে সক্ষম করে।

Indexes are automatically created when PRIMARY KEY and UNIQUE constraints are defined on table columns. For example, when you create a table with a UNIQUE constraint, Database Engine automatically creates a nonclustered index.

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

সূচকগুলি সম্পর্কে আরও তথ্যের জন্য দয়া করে এটিকে দেখুন (ক্লাস্টারযুক্ত এবং ক্লাস্টারযুক্ত নয়): https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-desmitted?view= SQL সার্ভার-ver15

আশাকরি এটা সাহায্য করবে!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.