এফটিএস সমর্থন করে না LIKE
পূর্বে গৃহীত উত্তর ভুল ছিল। সম্পূর্ণ টেক্সট খোঁজা তার পূর্ণ টেক্সট ইনডেক্স সাথে আছেন না জন্য LIKE
এ সব অপারেটর, এটা তার নিজের অপারেটার এবং নির্বিচারে স্ট্রিং জন্য কাজ করে না। এটি অভিধান এবং স্টেমিংয়ের উপর ভিত্তি করে শব্দের উপর কাজ করে । এটি শব্দের সাথে উপসর্গের মিলটিকে সমর্থন করে তবে অপারেটরের সাথে নয় :LIKE
জন্য ত্রিগ্রাম সূচী LIKE
অতিরিক্ত মডিউলটি ইনস্টল করুন pg_trgm
যা কেবল বাম-অ্যাঙ্কার্ডগুলি নয়, সমস্ত এবং নিদর্শনগুলিকে সমর্থন করার জন্য GIN এবং GiST ট্রাইগ্রাম সূচকগুলির জন্য অপারেটর ক্লাস সরবরাহ করে :LIKE
ILIKE
উদাহরণ সূচক:
CREATE INDEX tbl_col_gin_trgm_idx ON tbl USING gin (col gin_trgm_ops);
বা:
CREATE INDEX tbl_col_gist_trgm_idx ON tbl USING gist (col gist_trgm_ops);
উদাহরণ ক্যোয়ারী:
SELECT * FROM tbl WHERE col LIKE '%foo%'; -- leading wildcard
SELECT * FROM tbl WHERE col ILIKE '%foo%'; -- works case insensitively as well
Trigrams? সংক্ষিপ্ত স্ট্রিং সম্পর্কে কি?
সূচকযুক্ত মানগুলিতে 3 টিরও কম অক্ষরের শব্দগুলি এখনও কাজ করে। ম্যানুয়াল:
প্রতিটি শব্দের স্ট্রিংয়ে থাকা ট্রিগারগুলির সেট নির্ধারণ করার সময় দুটি স্পেস উপসর্গ এবং একটি স্থান প্রত্যয়যুক্ত বলে মনে করা হয়।
এবং 3 টিরও কম অক্ষরের সাথে নিদর্শনগুলি অনুসন্ধান করবেন? ম্যানুয়াল:
উভয় LIKE
এবং নিয়মিত-এক্সপ্রেশন অনুসন্ধানের জন্য, মনে রাখবেন যে কোনও এক্সট্র্যাকটেবল ট্রিগার সহ একটি প্যাটার্ন একটি পূর্ণ-সূচী স্ক্যানে ক্ষয়।
অর্থ, সেই সূচক / বিটম্যাপ সূচি স্ক্যানগুলি এখনও কাজ করে (প্রস্তুত বিবরণের জন্য ক্যোয়ারী পরিকল্পনা ভাঙবে না), এটি আপনাকে আরও ভাল পারফরম্যান্স কিনে না। সাধারণত কোনও বড় ক্ষতি হয় না, যেহেতু 1- বা 2-অক্ষরের স্ট্রিং খুব কমই নির্বাচিত হয় (অন্তর্নিহিত টেবিলের ম্যাচের কয়েক শতাংশের বেশি) এবং সূচি সহায়তা শুরু করার সাথে কর্মক্ষমতা উন্নত করতে পারে না, কারণ একটি পূর্ণ টেবিল স্ক্যান দ্রুত হয়।
text_pattern_ops
উপসর্গ মিলনের জন্য
কেবল বাম-অ্যাঙ্কার্ড নিদর্শনগুলির জন্য (কোনও শীর্ষস্থানীয় ওয়াইল্ডকার্ড নয়) আপনি বিটি্রি সূচকের জন্য উপযুক্ত অপারেটর শ্রেণির সাথে সর্বোত্তম পাবেন : text_pattern_ops
বা varchar_pattern_ops
। স্ট্যান্ডার্ড পোস্টগ্রিসের অন্তর্নির্মিত বৈশিষ্ট্য উভয়ই, কোনও অতিরিক্ত মডিউলের প্রয়োজন নেই। অনুরূপ কর্মক্ষমতা, তবে অনেক ছোট সূচক index
উদাহরণ সূচক:
CREATE INDEX tbl_col_text_pattern_ops_idx ON tbl(col text_pattern_ops);
উদাহরণ ক্যোয়ারী:
SELECT * FROM tbl WHERE col LIKE 'foo%'; -- no leading wildcard
অথবা , যদি আপনার 'সি' লোকালে (কার্যকরভাবে কোনও লোকেল নেই) আপনার ডাটাবেস চালানো উচিত , তবে বাইট অর্ডার অনুসারে সবকিছু সাজানো হয় এবং ডিফল্ট অপারেটর শ্রেণীর সাথে একটি সরল বিটি সূচক কাজ করে।
ডিবিএএসই সম্পর্কিত এই সম্পর্কিত উত্তরের আরও বিশদ, ব্যাখ্যা, উদাহরণ এবং লিঙ্কগুলি: