মাইএসকিউএল - কেন প্রতিটি ক্ষেত্র সূচী না?


107

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

সূচকগুলি দুর্দান্ত, তবে কেন কেউ কেবল সমস্ত ক্ষেত্রকে টেবিলকে অবিশ্বাস্যরূপে দ্রুত তৈরি করতে পারেননি? আমি নিশ্চিত যে এটি না করার একটি ভাল কারণ আছে তবে ত্রিশ ক্ষেত্রের টেবিলে তিনটি ক্ষেত্র কীভাবে? একটি 30 ক্ষেত্রে 10? একটি কোথায় লাইন আঁকা উচিত, এবং কেন?


7
ইনডেক্সযুক্ত 10 কেও বেশি এন্ট্রি সহ একটি টেবিলের মধ্যে একটি মান সন্নিবেশ করানোর চেষ্টা করুন, সন্নিবেশ / মুছে ফেলার কারণে সমস্ত এন্ট্রি আপডেট করতে হবে এবং প্রতিটি মানের একটি সূচক থাকলে এটি একটি বিশাল সময়ের ওভারহেড এবং কিছুটা মেমরির ওভারহেড
যিশু রামোস

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

1
যদি আপনার 30 টি ক্ষেত্রের সাথে একটি টেবিল থাকে তবে আপনার অবশ্যই আপনার টেবিলের কাঠামোগুলি দেখতে হবে। তাদের সাথে কাজ করা খুব কঠিন হওয়া উচিত।
ওয়েবে

উত্তর:


122

সূচকগুলি মেমোরিতে স্থান গ্রহণ করে (র‌্যাম); অনেক বেশি বা অনেক বেশি সূচক এবং ডিবি তাদের ডিস্কে এবং থেকে অদলবদল করতে চলেছে। এগুলি সন্নিবেশ এবং মোছার সময়ও বাড়ায় (প্রতিটি সূচি অবশ্যই dataোকানো / মুছে ফেলা / আপডেট হওয়া প্রতিটি তথ্যের জন্য আপডেট করতে হবে)।

আপনার অসীম স্মৃতি নেই। এটি তৈরি করা যাতে সমস্ত সূচী রাম = ভাল in

আপনার অসীম সময় নেই। আপনার প্রয়োজনীয় কলামগুলি সূচীকরণের জন্য আপনাকে সন্নিবেশ করা / মোছা / আপডেট করতে পারফরম্যান্স হিটকে ন্যূনতম করে।


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

@ অ্যান্ড্রু দেড় বছর পরে, আপনি কি আপনার প্রশ্নের উত্তর খুঁজে পেয়েছেন?
সিনজাই

1
@ সিনজাই এগুলিকে সাধারণভাবে যুক্ত করা যেখানে কলামগুলি ছিল তা থাম্বের সম্ভবত একটি ভাল নিয়ম। তবে অন্যথায় আপনি যদি সূচকে বিশেষজ্ঞ হতে চান তবে এটি প্রচুর পড়াতে পারবেন। যেমন। stackoverflow.com/questions/3049283/…
অ্যান্ড্রু

ডিস্কের জায়গা ভুলে যাবেন না।
jpmc26

27

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

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


6
লিঙ্কটি এমএস এসকিউএল সার্ভারের জন্য ; এই প্রশ্নটি মাইএসকিউএল
ওএমজি পনিস

5
@ ওএমজি লিঙ্কের বেশিরভাগ পয়েন্ট সমস্ত বড় আরডিবিএমএসের জন্য প্রযোজ্য
রিচার্ড

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

3
@mg প্রথম 6 পয়েন্ট যে কোনও ডিবিএম-এর জন্য প্রযোজ্য। নন / ক্লাস্টারযুক্তগুলি এড়িয়ে যান, তারপরে নীচে নীচে সাধারণ সূচক সম্পর্কিত আরও পয়েন্ট রয়েছে, এছাড়াও পয়েন্টে। আপনার যদি নির্দিষ্ট জিনিসগুলি উল্লেখ করতে চান তবে তাদের কল করুন। অন্যথায় এটি দেখে মনে হচ্ছে আপনি মন্তব্যগুলি (আপনার মোছা উত্তর সহ) থেকে সমস্ত উত্তর প্রত্যাখ্যান করছেন, যে কেউ আপনার মূল্যায়নের সাথে একমত নয়।
রিচার্ডকিকি

10

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


এবং প্রতিটি সূচক কিছু ডাটাবেস স্পেস নেয়
একানথাস

@ অ্যাকানথাস: উপলব্ধ সবচেয়ে ছোট হার্ড ড্রাইভগুলি গিগাবাইটে পরিমাপ করা হয় ।
ওএমজি পনিস

4
@ ওএমজি কিন্তু ব্রায়ান যেমন উল্লেখ করেছেন তেমন র‌্যাম নয়। আপনার প্রয়োজনের চেয়ে বেশি সঞ্চয় করা কখনই ভাল ধারণা নয়। র‌্যামে ডেটা / ইনডেক্স ক্যাচিং, ব্যাকআপ মিডিয়া (সংস্করণগুলি যা টেপ প্রতি মাপসই হবে ইত্যাদি) সমস্ত অকেজো সূচক দ্বারা প্রভাবিত হয়
রিচার্ড দ্য কিউইভি ২

9
কোনও সংস্থার আধিক্য অপব্যয় বা অদক্ষতার কোনও কারণ নয়।
স্ম্যান্ডোলি

6
সত্য, তবে সীমাবদ্ধতাগুলি 10+ বছর আগে সেগুলি ছিল না।
ওএমজি পনিজ

2

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


2

এই উত্তরটি আমার ব্যক্তিগত মতামত ভিত্তিক আমি উত্তর দেওয়ার জন্য আমার গাণিতিক যুক্তি ব্যবহার করছি

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

আমরা যদি সমস্ত টেবিলগুলিতে সূচকগুলি প্রয়োগ করি তবে আমাদের সূচী আপডেটগুলি সম্পর্কে ভাবতে হবে একটি আপডেট ছিল সমস্ত সূচি আপডেট এটি সময় অনুসারে সমস্ত আনর্ডারড সমতুল্য নির্বাচন করে

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

সূচক কি?

বিদেশী-কীগুলি এর উপর ভিত্তি করে আবশ্যক

প্রাথমিক-কী: আমি এখনও নিশ্চিত নই যে এটি পড়তে পারে যদি কেউ এই ক্ষেত্রে সহায়তা করতে পারে

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

এই 3 পয়েন্টগুলি থেকে আমি উপসংহারে পৌঁছাতে পারি যে যদি আমাদের কাছে কে কীগুলির সমন্বয়ে এল ক্ষেত্র থাকে তবে সীমাটি কোথাও ((L-K)/2)+KL / 10 দ্বারা আরও কম বা কমের কাছাকাছি হওয়া উচিত

এই উত্তরটি আমার যুক্তি এবং ব্যক্তিগত অনুমানের উপর ভিত্তি করে


1

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


আমি নিশ্চিত না যে এটি টেবিলটি বজ্রপাত দ্রুত পড়তে পারে কিনা, বিশেষত যদি ডেটা-টেবিলটি কেবলমাত্র 100MB তবে সূচীকরণযোগ্য 300MB বা তার বেশি হয়।
ডেভিড

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