একাধিক সূচি বনাম বহু-কলাম সূচী


645

আমি সবে এসকিউএল সার্ভার 2005-এ একটি টেবিলের সাথে একটি সূচক যুক্ত করেছি এবং এটি আমার চিন্তাভাবনা পেয়েছে। 1 টি সূচক তৈরি করতে এবং একাধিক কলামকে প্রতি কলামে 1 সূচী সূচী করতে চান তা নির্ধারণের মধ্যে পার্থক্য কী।

একে অপরকে ব্যবহারের কেন এমন কিছু কারণ রয়েছে?

উদাহরণ স্বরূপ

Create NonClustered Index IX_IndexName On TableName
(Column1 Asc, Column2 Asc, Column3 Asc)

বনাম

Create NonClustered Index IX_IndexName1 On TableName
(Column1 Asc)

Create NonClustered Index IX_IndexName2 On TableName
(Column2 Asc)

Create NonClustered Index IX_IndexName3 On TableName
(Column3 Asc)

উত্তর:


319

আমি একমত গাড়ীতে Roux

এই নিবন্ধটি আপনাকে সঠিক পথে পৌঁছে দেওয়া উচিত:

একটি বিষয় লক্ষণীয়, ক্লাস্টারযুক্ত সূচিগুলির প্রথম কলাম হিসাবে একটি অনন্য কী (একটি পরিচয় কলাম আমি প্রস্তাব করব) থাকা উচিত। মূলত এটি সূচি শেষে আপনার ডেটা sertোকাতে সহায়তা করে এবং প্রচুর ডিস্ক আইও এবং পৃষ্ঠা বিভাজন ঘটায় না।

দ্বিতীয়ত, আপনি যদি নিজের ডেটাতে অন্য সূচক তৈরি করে থাকেন এবং সেগুলি চালাকভাবে তৈরি করা হয় তবে সেগুলি পুনরায় ব্যবহার করা হবে।

যেমন ধরুন আপনি তিনটি কলামে একটি সারণী সন্ধান করেছেন

রাজ্য, কাউন্টি, জিপ

  • আপনি কখনও কখনও শুধুমাত্র রাষ্ট্র দ্বারা অনুসন্ধান।
  • আপনি কখনও কখনও রাষ্ট্র এবং কাউন্টি দ্বারা অনুসন্ধান।
  • আপনি প্রায়শই রাষ্ট্র, কাউন্টি, জিপ দ্বারা অনুসন্ধান করেন।

তারপরে রাজ্য, কাউন্টি, জিপ সহ একটি সূচক। এই তিনটি অনুসন্ধানে ব্যবহৃত হবে।

আপনি যদি জিপ দিয়ে বেশ কিছুটা অনুসন্ধান করেন তবে উপরের সূচকটি ব্যবহার করা হবে না (এসকিউএল সার্ভার দ্বারা যাইহোক) জিপ সেই সূচকের তৃতীয় অংশ এবং কোয়েরি অপটিমাইজার সেই সূচকটিকে সহায়ক হিসাবে দেখতে পাবে না।

এরপরে আপনি একা জিপতে একটি সূচক তৈরি করতে পারেন যা এই দৃষ্টান্তটিতে ব্যবহৃত হবে।

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

আমার অনুমান যে আপনি যে উত্তরটির সন্ধান করছেন তা হ'ল এটি আপনার উপর নির্ভর করে যেখানে আপনার ঘন ঘন ব্যবহৃত প্রশ্নগুলির ক্লজ এবং আপনার গ্রুপ এর দ্বারাও হয়।

নিবন্ধটি অনেক সাহায্য করবে। :-)


2
তাহলে কি সেরা কাজটি হ'ল প্রতিটি কলামের জন্য পৃথক সূচি ছাড়াও রাজ্য, কাউন্টি এবং জিপের জন্য একটি সূচককে সংজ্ঞায়িত করা?
ম্যাক্সিম জাস্লাভস্কি

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

@ এটি দেখে মনে হচ্ছে যে 4 বছর আগে আমি এখন থেকে মূল লিঙ্কটি বাছাই করার পরে 3 বছরের মধ্যে খুব শীঘ্রই কিছু হারিয়ে গেছে। আমি আপনাকে বলতে পারি যে ব্লগ পোস্টটির সঠিক শিরোনাম রয়েছে যেমনটি দুষ্টচিকিত্সার দ্বারা লিঙ্ক করা হয়েছিল, তবে দেখে মনে হচ্ছে সিরিজের ফলোআপ ব্লগগুলি সেই প্রথম পোস্ট থেকে সহজে খুঁজে পাওয়া যায় না। আপনি সিরিজের অন্যদের আপ করতে পারেন কিনা তা দেখার জন্য আপনাকে কিম্বার্লির ব্লগ সংরক্ষণাগার ঘুরে দেখতে হবে।
jball

1
1) "মূলত [প্রথম হিসাবে আইডেন্টিটি কলামযুক্ত ক্লাস্টারড ইনডেক্স] সূচকের শেষে আপনার ডেটা inোকাতে সহায়তা করে" সঠিক। "এবং প্রচুর ডিস্ক আইও এবং পৃষ্ঠা বিভাজন ঘটায় না" বহু-ব্যবহারকারী সিস্টেমে সম্পূর্ণ মিথ্যা। সত্য কথাটি হ'ল, এটি বহু-ব্যবহারকারী সিস্টেমে উচ্চ বিতর্ক (কম সমঝোতা) এর গ্যারান্টি দেয় । 2) ক্লাস্টারড ইনডেক্স একটি রিলেশনাল কী হওয়া উচিত, অর্থাত্‍। না একটি IDENTITY, GUID, etc। 3) "এরপরে রাজ্য, কাউন্টি, জিপ সহ একটি সূচক এই তিনটি অনুসন্ধানে ব্যবহার করা হবে।" মিথ্যা, এবং "প্রথম কলামটি ব্যবহারযোগ্য" এর বিপরীতে। সূচকের 2 য় এবং সাব কোলগুলি অনুসন্ধানের জন্য ব্যবহারযোগ্য নয়।
পারফরম্যান্সডিবিএ

82

হ্যাঁ. আমি আপনাকে পরামর্শ দিচ্ছি যে ইনডেক্সিংয়ের বিষয়ে কিম্বারলি ট্রিপের নিবন্ধগুলি পরীক্ষা করে দেখুন ।

যদি কোনও সূচকটি "আচ্ছাদন" হয় তবে সূচি ব্যতীত আর কিছু ব্যবহার করার দরকার নেই। এসকিউএল সার্ভার ২০০৫-এ, আপনি এমন সূচীতে অতিরিক্ত কলামগুলিও যুক্ত করতে পারেন যা কীটির অংশ নয় যা বাকী সারিতে থাকা ট্রিপগুলি মুছে ফেলতে পারে।

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

আপনি সূচকগুলি কোনও প্রদত্ত ক্যোয়ারী বা ওয়ার্কলোডকে সর্বোত্তম সঞ্চালন করবে তা নির্ধারণে সহায়তা করতে টিউনিং উইজার্ডটিও ব্যবহার করতে পারেন।


7
কিম্বারলি ট্রিপ জানেন যে তিনি কী বিষয়ে কথা বলছেন। আমি তাঁর সাথে কথা বলছিলাম এবং তিনি এই জিনিসটি ভিতরে জানতেন। দুর্দান্ত পরামর্শ।
অশুচি

@ কেডরক্স যদি বেশিরভাগ ক্ষেত্রে আমার যেখানে ক্লাজের '&' সম্পর্কের ক্ষেত্রে 2 টি কলাম থাকে, তবে তাদের উপর একটি বহু-কলাম সূচী বা তাদের উভয়ই একক কলাম সূচী রাখা ভাল
এটি

2
উভয় কলাম সহ @ রচিতগুপ্ত ওয়ান সূচক
ক্যাড রক্স

41

মাল্টি-কলাম সূচকটি সমস্ত কলামগুলিকে উল্লেখ করে প্রশ্নের জন্য ব্যবহার করা যেতে পারে :

SELECT *
FROM TableName
WHERE Column1=1 AND Column2=2 AND Column3=3

এটি সরাসরি বহু-কলাম সূচক ব্যবহার করে দেখা যেতে পারে। অন্যদিকে, একক-কলাম সূচকের বেশিরভাগটি ব্যবহার করা যেতে পারে (এটিতে কলাম 1 = 1 থাকা সমস্ত রেকর্ড সন্ধান করতে হবে এবং তারপরে সেগুলির প্রতিটিতে কলাম 2 এবং কলাম 3 পরীক্ষা করতে হবে)।


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

17

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


প্রশ্নের সাথে সম্পর্কিত, কীভাবে (সাধারণ) সূচকগুলি ব্যবহৃত হয় তার লিঙ্কযুক্ত ভাল ব্যাখ্যার জন্য +1।
রবএম

8

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

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

একক কলামগুলিতে সূচী তৈরি করা ওলটিপি সিস্টেমে প্রায়শই সন্ধানের জন্য অনুসন্ধানের জন্য দরকারী।

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

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