কোনও বিদেশী কী কী স্বয়ংক্রিয়ভাবে একটি সূচক তৈরি করে?


389

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

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


আপনার ডিবি লোকের মতো আমারও একই ধারণা রয়েছে - এফকে প্রকৃতপক্ষে একটি সূচক তৈরি করে।
Vinnie

9
না - একটি এফকে স্বয়ংক্রিয়ভাবে একটি সূচক তৈরি করে না । এটি তৈরির অর্থ উপলব্ধি করে - তবে এটি এসকিউএল সার্ভার দ্বারা স্বয়ংক্রিয়ভাবে সম্পন্ন হয় না
marc_s

47
একেবারেই জিজ্ঞাসা করার মতো বোকা না!
marc_s

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

3
আমি বলব এমন একটি ডাটাবেস লোক যিনি জানেন না এটি অবশ্যই প্রশিক্ষণের গুরুতর প্রয়োজন in ডাটাবেস লোকেরা পারফরম্যান্সের জন্য দায়ী, এই ধরণের জিনিসটি জানা তাদের কাজ। এটি স্থূল অক্ষমতার পরামর্শ দেয়।
এইচএলজিইএম

উত্তর:


343

একটি বিদেশী কী একটি সীমাবদ্ধতা, দুটি টেবিলের মধ্যে একটি সম্পর্ক - যা প্রতি সেটের সূচকগুলির সাথে কোনও সম্পর্ক নেই।

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

সুতরাং এটি এফকে জড়িত যে কোনও কলামকে সূচী করাতে ভাল বোঝা যায়, তবে প্রতি সেফ এফকে কোনও সূচক নয়।

কিম্বার্লি ট্রিপের দুর্দান্ত নিবন্ধটি দেখুন "এসকিউএল সার্ভার কখন বিদেশী কী কলামগুলিতে সূচি স্থাপন করা বন্ধ করে দিয়েছিল?"


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

উপরে উল্লিখিত এই নিবন্ধটি বিভ্রান্তিকর কারণ এসকিউএল সার্ভার বা অন্য কোনও ডাটাবেস কখনও এফকে তে কোনও সূচক রাখে না।
vsingh

7
@ ভাইসিংহ: নিবন্ধটি প্রকাশ করার চেষ্টা করে যা ঠিক - এটি একটি সাধারণ ভুল ধারণা যে কোনও এফকে স্বয়ংক্রিয়ভাবে একটি সূচক তৈরি করে - এটি তা করে না
marc_s

5
@MBCook না, পোস্টগ্রি নেই না (9.2 বা কোনও পূর্বের সংস্করণে অন্তত) স্বয়ংক্রিয়ভাবে একটি বিদেশী কী সম্পর্ক সংজ্ঞায়িত উল্লেখ পাশ একটি সূচক তৈরি REFERENCES। এটি স্বয়ংক্রিয়ভাবে UNIQUEকোনও PRIMARY KEYবা UNIQUEবাধার জন্য একটি সূচক তৈরি করে এবং বিদেশী কী সম্পর্কের রেফারেন্সড শেষের UNIQUEজন্য একটি সূচক উপস্থিত থাকা প্রয়োজন , তবে রেফারেন্সিং শেষের জন্য স্বয়ংক্রিয়ভাবে কিছুই করে না , যদিও এটি নিজেকে তৈরি করা প্রায়শই ভাল ধারণা। স্ট্যাকওভারফ্লো.com
ক্রেগ

16
বিভ্রান্তি থাকতে পারে কারণ আপনি যখন কোনও বিদেশী কী যুক্ত করেন তখন মাইএসকিউএল InnoDB উভয়ই প্রয়োজন হয় এবং স্বয়ংক্রিয়ভাবে একটি সূচক তৈরি করে - dev.mysql.com/doc/refman/5.5/en/…
হাম্ব্যাডস

42

বাহ, উত্তরগুলি সমস্ত মানচিত্রে রয়েছে। সুতরাং ডকুমেন্টেশন বলে:

একটি বিদেশী মূল সীমাবদ্ধতা সূচকের প্রার্থী কারণ:

  • প্রাথমিক মূল সীমাবদ্ধতার পরিবর্তনগুলি সম্পর্কিত টেবিলগুলিতে বিদেশী কী বাধার সাথে পরীক্ষা করা হয়।

  • অন্যান্য সারণীর প্রাথমিক বা অনন্য কী কলাম (গুলি) এর সাথে একটি সারণীর বিদেশী মূল সীমাবদ্ধতার সাথে কলাম (গুলি) এর সাথে মেলানোর সময় সম্পর্কিত টেবিলের ডেটা প্রশ্নের সাথে মিলিয়ে বিদেশী কী কলামগুলি প্রায়শ জোয়ার মাপদণ্ডে ব্যবহৃত হয়। একটি সূচকটি মাইক্রোসফ্ট ® এসকিউএল সার্ভারকে ™ 2000 কে বিদেশী কী টেবিলে সম্পর্কিত ডেটা দ্রুত খুঁজে পেতে দেয়। যাইহোক, এই সূচক তৈরি করা প্রয়োজন হয় না। দুটি সম্পর্কিত টেবিল থেকে ডেটা একত্রিত হতে পারে এমনকি যদি কোনও প্রাথমিক কী বা বিদেশী কী বাধাগুলি টেবিলগুলির মধ্যে সংজ্ঞায়িত না করা হয় তবে দুটি টেবিলের মধ্যে একটি বিদেশী কী সম্পর্ক নির্দেশ করে যে দুটি টেবিলগুলি এমন প্রশ্নের সাথে মিলিত হওয়ার জন্য অনুকূলিত হয়েছে যা কীগুলি ব্যবহার করে তার মানদণ্ড।

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


5
ঠিক - এটি কোনও সূচকের জন্য প্রার্থী - তবে এটি স্বয়ংক্রিয়ভাবে এক হিসাবে তৈরি হয় না! বেশ পরিষ্কার আসলে,
IMHO

4
আমি এই অংশটি বিশৃঙ্খলা অবস্থায় পেয়েছি: "দুটি টেবিলের মধ্যে একটি বৈদেশিক কী সম্পর্ক নির্দেশ করে যে দুটি টেবিলকে এমন প্রশ্নের সাথে মিলিত করতে অনুকূলিত করা হয়েছে যা কীগুলি তার মানদণ্ড হিসাবে ব্যবহার করে" " এটি "... দুটি
টেবিলটি

18

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


"একটি অন্তর্নিহিত সূচক" কী? এটি কি কেবল বোঝায় যে এটি * গাছ * তৈরি না করেই রয়েছে?
স্টেফানি পৃষ্ঠা

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

7

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


6

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

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

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

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


ঠিক - এ কারণেই কোনও এফকে সূচকটি প্রচুর পরিমাণে বোঝায় (বেশিরভাগ সময়)
মার্ক_স্

1
অধিকাংশ সময়? মনে হয় এটি পিতামাতার থেকে মুছতে মুছতে পারে। আপনি বেশিরভাগ সময় পিতামাতার কাছ থেকে মুছে ফেললে আমার ধারণা এটি সত্য true
স্টেফানি পৃষ্ঠা

6

বিদেশী কী সূচি তৈরি করে না। কেবলমাত্র বিকল্প কী বাধা (UNIQUE) এবং প্রাথমিক কী বাধা সূচক তৈরি করে। এটি ওরাকল এবং এসকিউএল সার্ভারে সত্য।


3

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


3

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


3

PostgeSql এ আপনি সূচীপত্রগুলি পরীক্ষা করতে পারেন যদি আপনি table ডি টেবিলের নামটি চাপান

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

আমি মনে করি এটি কমপক্ষে পোস্টগ্রাগের জন্য আপনার প্রশ্নের উত্তর দেয়।


দুঃখিত, আমি লক্ষ্য করি না যে প্রশ্নটি এমএস এসকিউএল সার্ভারের সাথে সম্পর্কিত তবে উত্তর পোস্ট করার পরে। এটি সম্ভবত এখনও কাউকে সাহায্য করতে পারে ...
গ্রেগর

2

আমি লক্ষ্য করেছি যে এমএসএসকিউএল-তে নির্দেশিত সত্তা ফ্রেমওয়ার্ক 6.1 স্বয়ংক্রিয়ভাবে বিদেশী কীগুলিতে সূচীগুলি যুক্ত করে।


আমি বিশ্বাস করি না আপনি নিজে পতাকা কলাম একটি সূচক অংশ হিসাবে (যেমন আপনাকে অনেকগুলি বেশি সদস্য একটি যৌগিক সূচক তৈরি করছেন হলে) যদি এটা আছে
রোল্যান্ড শ

0

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

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