পোস্টগ্রিএসকিউএল: আপনি তৈরি টেবিল সংজ্ঞা একটি সূচক তৈরি করতে পারেন?


104

আমি তৈরির টেবিলের কিছু কলামে সূচি যুক্ত করতে চাই। এগুলি তৈরি করার টেবিলে সংজ্ঞায় যুক্ত করার উপায় আছে কি আমাকে অন্য কোয়েরির সাথে পরে যুক্ত করতে হবে?

CREATE INDEX reply_user_id ON reply USING btree (user_id);

উত্তর:


117

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

PostgreSQL স্বতন্ত্রতা প্রয়োগের জন্য প্রতিটি অনন্য বাধা এবং প্রাথমিক কী সীমাবদ্ধতার জন্য স্বয়ংক্রিয়ভাবে একটি সূচক তৈরি করে।

তা ছাড়া, যদি আপনি কোনও অনন্য-অনন্য সূচক চান তবে আপনাকে এটি আলাদা আলাদা CREATE INDEXক্যোয়ারিতে তৈরি করতে হবে ।


ধন্যবাদ, আমি সূচি তৈরির অনন্য বাধা সম্পর্কে জানতাম না।
ক্লোনক্রস

নোট করুন যে পোস্টগ্রেএসকিউএল ট্রানজেকশনাল স্কিমা আপডেটগুলিকে সমর্থন করে - আপনি নেট সামগ্রিক টেবিল তৈরির কাজটি পুরোপুরি সফল হতে বা ব্যর্থ করতে চান তবে আপনার তৈরি টেবিল এবং ক্রেইট ইন্ডেক্সের বিবৃতিগুলির চারপাশে শুরু করুন / কমিট করা ভাল ধারণা।
mindplay.dk

22

না।

তবে আপনি তৈরিতে uniqueসূচী তৈরি করতে পারেন তবে এগুলি কারণ হিসাবে সীমাবদ্ধ হিসাবে শ্রেণিবদ্ধ করা হয়েছে । আপনি "সাধারণ" সূচক তৈরি করতে পারবেন না।


5

পিটার ক্রাউস একটি সাধারণ উত্তর খুঁজছেন:

একটি মডেল সিনট্যাক্স (বছর ২০২০) রয়েছে, সুতরাং দয়া করে ব্যাখ্যা পোস্ট করুন এবং উদাহরণগুলি দেখান, postgresql.org/docs/current/sql-createtable.html এর সাথে সামঞ্জস্যপূর্ণ

আপনি ইনলাইন ইনডেক্স সংজ্ঞাটি অনুসন্ধান করছেন , যা পোস্টগ্র্রেএসকিউএল এর জন্য বর্তমান সংস্করণ 12 পর্যন্ত উপলভ্য নয় UN অনন্য / প্রাথমিক মূল সীমাবদ্ধতা বাদে এটি আপনার জন্য অন্তর্নিহিত সূচক তৈরি করে।

ছক তৈরি কর

[চুক্তি সীমাবদ্ধতা_নাম] EC পরীক্ষা করুন (অভিব্যক্তি) [কোনও উত্তরাধিকার] | অনন্য (কলাম_নাম [, ...]) সূচি_পরিমিতি | প্রাথমিক কী (কলামের নাম [, ...]) সূচি_পরিমিতি |


ইনলাইন কলাম সংজ্ঞা নমুনা বাক্য গঠন (এখানে এসকিউএল সার্ভার):

CREATE TABLE tab(
  id INT PRIMARY KEY,                            -- constraint
  c INT INDEX filtered (c) WHERE c > 10,         -- filtered index
  b VARCHAR(10) NOT NULL INDEX idx_tab_b,        -- index on column
  d VARCHAR(20) NOT NULL,
  INDEX my_index NONCLUSTERED(d)                 -- index on column as separate entry
);

ডিবি <> ফিডাল ডেমো

তাদের প্রবর্তনের পিছনে যুক্তিটি বেশ আকর্ষণীয় যে ইনলাইন সূচীগুলি কী? ফিল ফ্যাক্টর দ্বারা


হাই, সলভ (!) আপনি আরও জটিল কেস সম্পর্কে কিছু যুক্ত করতে পারেন, উদাহরণস্বরূপ b VARCHAR(10) NOT NULL INDEX idx_tab_b gin (b gin_trgm_ops).. পুনরাবৃত্ত কলামের নাম ছাড়া কীভাবে আরও পরামিতি যুক্ত করবেন?
পিটার ক্রাউস

@ পিটারক্রাউস আমি যে উদাহরণটি দিয়েছি তা হ'ল এসকিউএল সার্ভারের জন্য যা gin_trgm_ops সমর্থন করে না।
লুকাশজ সজোদা

হাই @ লুকাসসজোজদা সিনট্যাক্সের জন্য, সম্ভবত আপনি যে কোনও ধরণের জটিলটিকে ইনলাইন সূচক সংজ্ঞাটিরCREATE INDEX idxName ON tableName USING MethodName (fieldName optionName); সিনট্যাক্সে রূপান্তরিত করতে চেষ্টা করতে পারেন । PS: এই প্রশ্নটি মাইক্রোসফ্ট-এসকিউএল-সার্ভার নয়, পোস্টগ্রিজএসকিউএল সম্পর্কে (ট্যাগগুলি দেখুন)।
পিটার ক্রাউস

@ পিটারক্রস আমি পুরোপুরি সচেতন যে এই প্রশ্ন পোস্টগ্রিজ এসকিউএল সম্পর্কে। আমি আপনাকে এই বৈশিষ্ট্যটির যথাযথ নাম দিয়েছি এবং উদাহরণটি দেখায় যে এটি কেমন দেখাচ্ছে। আসুন আশা করি ভবিষ্যতে আরও আরডিবিএমএস ইনলিন্ড সূচকগুলিকে সমর্থন করবে :)
লুকাশজ সজোদা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.