ইন্ডেক্স বনাম অল্টার টেবিলে যোগ করুন ইন্ডেক্স - মাইএসকিউএলিজম, বা এসকিউএল স্ট্যান্ডার্ড তৈরি করুন?


28

সবেমাত্র একটি অদ্ভুত সমস্যা জুড়ে এসেছে, যার মাধ্যমে আমি কীভাবে একটি সূচক তৈরি করব তার উপর নির্ভর করে একটি সূচকের নাম প্রয়োজন।

http://dev.mysql.com/doc/refman/5.5/en/create-index.html

http://dev.mysql.com/doc/refman/5.5/en/alter-table.html

CREATE INDEX `random_name` ON `my_table` (`my_column`); # Requires an index name

ALTER TABLE `my_table` ADD INDEX (`my_column`); # Does not require an index name

আমার কাছে মনে হচ্ছে ক্রেইট আইএনডিএক্স কল, সূচকের নাম প্রয়োজনীয় করা উচিত নয়। আমি ভাবছি এটি কি মাইএসকিউএলিজম, বা এসকিউএল স্ট্যান্ডার্ড?

উত্তর:


25

আমি মনে করি না যে এসকিউএল স্ট্যান্ডার্ডটি নির্ধারণ করে কীভাবে একেবারে সূচি তৈরি করা যায়

এই উইকিপিডিয়া পৃষ্ঠা থেকে একটি উদ্ধৃতি :

প্রমিতকরণ

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

পোস্টগ্র্যাস ম্যানুয়ালটি এখানে এটি সমর্থন করে বলে মনে হচ্ছে:

এসকিউএল স্ট্যান্ডার্ডে সূচকের জন্য কোনও বিধান নেই।

এই সম্পর্কিত প্রশ্নের অধীনে আরও প্রমাণ


6
মাইএসকিউএল হ'ল আমি জানি এমন একমাত্র ডিবিএমএস যা ব্যবহার করে একটি সুস্পষ্ট সূচী যুক্ত করতে দেয় ALTER TABLE(এমন কয়েকটি ক্ষেত্রে রয়েছে যে প্রতিবন্ধকতাগুলি সমর্থন করার জন্য বিভিন্ন ডিবিএমএস দ্বারা অন্তর্ভুক্ত সূচকগুলি তৈরি করা হবে, তবে এটি আমার অর্থ নয়)।
a_horse_with_no_name

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

-1

আপনি যদি সূচকের জন্য কোনও নাম সরবরাহ না করেন তবে মাইএসকিউএল স্বয়ংক্রিয়ভাবে আপনার জন্য সূচকটির নাম রাখবে।

ALTER TABLE my_table ADD INDEX (col1);
ALTER TABLE my_table ADD INDEX (col1, col2);
ALTER TABLE my_table ADD INDEX (col2);

SHOW INDEX FROM my_table;

ALTER TABLE ADD INDEXবিবৃতি উপরে নিম্নলিখিত ইনডেক্স উত্পাদন করা হবে:

  • col1
  • col1_2
  • col2

যদি আপনি কেবল একটি কলাম দিয়ে একটি সূচক তৈরি করেন তবে সূচকের জন্য কোনও নাম সরবরাহ করা প্রয়োজন হবে না (যেহেতু সূচকের নামটি কলামের নামের মতো হবে)। তবে আপনি যদি একাধিক কলাম দিয়ে একটি সূচক তৈরি করেন তবে সূচকের জন্য একটি নাম সরবরাহ করা ভাল। তাই সূচিটি সনাক্ত করা আরও সহজ।

সূচকের জন্য একটি নাম সরবরাহ করা ভাল অনুশীলন (এবং এটি idxসূচক হিসাবে চিহ্নিত করার জন্য এটির সাথে প্রাক্সিক্স করুন ):

ALTER TABLE my_table ADD INDEX idx_my_column (my_column);

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