C
কোলেশন ডান পছন্দ।
লোকেল ছাড়াই কিছুটা দ্রুত। এবং যেহেতু কোনও কোলেশন ঠিক নেই, কোলেশন ছাড়াই ডাটাবেস তৈরি করুন , যার অর্থ C
।
অনেক ক্রিয়াকলাপের জন্য একটি জোট সরবরাহ করতে হবে এমন ব্যথা হতে পারে। যদিও ডিফল্ট কোলেশন এবং একটি অ্যাড-হক কোলেশনের মধ্যে গতির একটি উল্লেখযোগ্য পার্থক্য থাকা উচিত নয়। সর্বোপরি এটি কেবল অরসেটেড ডেটা, এবং বাছাইয়ের সময় কোলেশন বিধিগুলি প্রয়োগ করা হয়।
সচেতন থাকুন যে পোস্টগ্র্রেস অন্তর্নিহিত ওএস দ্বারা সরবরাহিত লোকেল সেটিংসে তৈরি করে, তাই আপনার প্রতিটি লোকেল ব্যবহারের জন্য লোকেল তৈরি করা দরকার। এখানে এবং এখানে এসও সম্পর্কিত সম্পর্কিত আরও উত্তর ।
তবে @Craig ইতিমধ্যে উল্লিখিত , ইনডেক্স এই দৃশ্যকল্প মধ্যে বোতলের হয়। সূচকের কোলেশন প্রয়োগযুক্ত অপারেটরের কোলেশনের সাথে মিলিত হতে পারে এমন অনেক ক্ষেত্রে চরিত্রের ডেটা জড়িত।
COLLATE
মিলের সূচকগুলি তৈরি করতে আপনি সূচকগুলিতে স্পেসিফায়ার ব্যবহার করতে পারেন । আপনি যদি একই টেবিলে ডেটা মিশ্রণ করেন তবে আংশিক সূচকগুলি উপযুক্ত পছন্দ হতে পারে।
উদাহরণস্বরূপ, আন্তর্জাতিক স্ট্রিং সহ একটি টেবিল:
CREATE TABLE string (
string_id serial
,lang_id int NOT NULL
,string text NOT NULL
);
এবং আপনি একবারে একটি ভাষায় বেশিরভাগ আগ্রহী:
SELECT *
FROM string
WHERE lang_id = 5 -- 5 being German / Germany here
AND string > 'foo' COLLATE "de_DE"
ORDER BY string COLLATE "de_DE";
তারপরে আংশিক সূচকগুলি তৈরি করুন:
CREATE INDEX string_string_lang_id_idx ON string (string COLLATE "de_DE")
WHERE lang_id = 5;
আপনার প্রয়োজন প্রতিটি ভাষার জন্য একটি।
প্রকৃতপক্ষে, উত্তরাধিকার হ'ল এই জাতীয় সারণীর জন্য সর্বোত্তম পদ্ধতির হতে পারে। তারপরে আপনার প্রতিটি উত্তরাধিকার সূত্রে প্রাপ্ত টেবিলে একটি একক লোকেলের জন্য কেবল স্ট্রিং থাকা সাদামাটা সূচক থাকতে পারে। অবশ্যই উত্তরাধিকারসূত্রে প্রাপ্ত টেবিলগুলির জন্য বিশেষ বিধিগুলি নিয়ে আপনার স্বাচ্ছন্দ্য বোধ করা উচিত।