হ্যা, তুমি পারো!! সমাধানটি সহজ, নিরাপদ এবং পারফরম্যান্ট হওয়া উচিত ...
আমি পোস্টগ্রেস্কএল-এ নতুন, তবে মনে হচ্ছে আপনি একটি অভিব্যক্তি সূচক ব্যবহার করে গণিত কলাম তৈরি করতে পারবেন , একটি দর্শন দিয়ে যুক্ত ( দৃশ্যটি optionচ্ছিক, তবে জীবনকে কিছুটা সহজ করে তোলে)।
মনে করুন আমার গণনাটি হয় md5(some_string_field)
, তবে আমি সূচকটি এইভাবে তৈরি করি:
CREATE INDEX some_string_field_md5_index ON some_table(MD5(some_string_field));
এখন, যে কোনও প্রশ্নের উপরে কাজ করে MD5(some_string_field)
তা সূচিটি স্ক্র্যাচ থেকে গণনার পরিবর্তে ব্যবহার করবে। উদাহরণ স্বরূপ:
SELECT MAX(some_field) FROM some_table GROUP BY MD5(some_string_field);
আপনি ব্যাখ্যা সহ এটি পরীক্ষা করতে পারেন ।
তবে এই মুহুর্তে আপনি কীভাবে কলামটি তৈরি করবেন তা জেনে টেবিলের ব্যবহারকারীদের উপর নির্ভর করছেন। জীবনকে সহজ করার জন্য, আপনি VIEW
একটি নতুন কলাম হিসাবে গণিত মান যুক্ত করে মূল টেবিলের একটি বাড়ানো সংস্করণে একটি তৈরি করতে পারেন :
CREATE VIEW some_table_augmented AS
SELECT *, MD5(some_string_field) as some_string_field_md5 from some_table;
এখন যে কোনও প্রশ্ন ব্যবহার করে এটি কীভাবে কাজ করে তা নিয়ে চিন্তা না করে some_table_augmented
ব্যবহার করতে সক্ষম some_string_field_md5
হবে .. তারা কেবল ভাল পারফরম্যান্স পান। ভিউটি মূল টেবিল থেকে কোনও ডেটা অনুলিপি করে না, সুতরাং এটি ভাল স্মৃতিশক্তির পাশাপাশি কর্মক্ষমতা অনুযায়ীও উপযুক্ত। তবে নোট করুন যে আপনি কেবলমাত্র উত্স টেবিলের মধ্যে কোনও দৃশ্যে আপডেট / সন্নিবেশ করতে পারবেন না, তবে আপনি যদি সত্যিই চান তবে আমার বিশ্বাস যে আপনি বিধিগুলি ব্যবহার করে উত্স টেবিলে সন্নিবেশ এবং আপডেটগুলি পুনর্নির্দেশ করতে পারবেন (আমি শেষ পয়েন্টে ভুল হতে পারি) আমি নিজে চেষ্টা করে দেখিনি)।
সম্পাদনা: দেখে মনে হচ্ছে যদি ক্যোয়ারিতে প্রতিদ্বন্দ্বী সূচকগুলি জড়িত থাকে তবে পরিকল্পনাকারী ইঞ্জিন কখনও কখনও এক্সপ্রেশন-সূচকটি মোটেই ব্যবহার করতে পারে না। পছন্দটি ডেটা নির্ভরশীল বলে মনে হচ্ছে।