@ ট্রেগোরেগ তার প্রস্তাবিত অনুগ্রহকে মন্তব্যে একটি প্রশ্ন উত্থাপন করেছে:
আমি বর্তমান উত্তরগুলি কাজ করে না। অ্যারে-টাইপযুক্ত কলামে জিআইএন সূচক ব্যবহার করা কোনও () অপারেটরের কর্মক্ষমতা বৃদ্ধি করে না। আসলেই কি এর কোন সমাধান নেই?
@ ফ্র্যাঙ্কের গৃহীত উত্তর আপনাকে অ্যারে অপারেটরগুলি ব্যবহার করতে বলে , যা পোস্টগ্র্রেস ১১ এর জন্য এখনও সঠিক The
... পোস্টগ্রাএসকিউএল এর স্ট্যান্ডার্ড ডিস্ট্রিবিউটে অ্যারেগুলির জন্য একটি জিআইএন অপারেটর শ্রেণি অন্তর্ভুক্ত রয়েছে, যা এই অপারেটরগুলি ব্যবহার করে সূচকযুক্ত ক্যোয়ারিকে সমর্থন করে:
<@
@>
=
&&
মান বিতরণে জিআইএন সূচকগুলির জন্য অন্তর্নির্মিত অপারেটর ক্লাসগুলির সম্পূর্ণ তালিকা এখানে।
পোস্টগ্রিস ইনডেক্সগুলি অপারেটরগুলিতে আবদ্ধ হয় (যা নির্দিষ্ট ধরণের জন্য প্রয়োগ করা হয়), একা ডেটা বা ফাংশন বা অন্য কিছু নয়। এটি পোস্টগ্রিসের মূল বার্কলে ডিজাইনের একটি heritageতিহ্য এবং এটি এখন খুব কঠিন। এবং এটি সাধারণত ঠিক কাজ করে fine টম লেন এ সম্পর্কে মন্তব্য করার সাথে এখানে pgsql- বাগগুলিতে একটি থ্রেড দেওয়া আছে।
কিছু পোস্টগিস ফাংশন (যেমন ST_DWithin()
) মনে হয় এই অধ্যক্ষটিকে লঙ্ঘন করেছে, তবে এটি তেমন নয়। স্বতন্ত্র অপারেটরগুলি ব্যবহার করার জন্য এই ফাংশনগুলি অভ্যন্তরীণভাবে পুনরায় লিখিত হয় ।
সূচকযুক্ত অভিব্যক্তি অপারেটরের বামে হতে হবে । বেশিরভাগ অপারেটরগুলির জন্য ( উপরের সমস্তগুলি সহ ) কোয়েরি পরিকল্পনাকারী অপারেশনগুলিকে উল্টিয়ে এই অর্জন করতে পারবেন যদি আপনি সূচকযুক্ত প্রকাশটি ডানদিকে রাখেন - তবে এটিকে COMMUTATOR
সংজ্ঞায়িত করা হয়েছে। ANY
কনস্ট্রাক্ট বিভিন্ন অপারেটর সঙ্গে একযোগে ব্যবহার করা যেতে পারে এবং একটি অপারেটর নিজেই নয়। অ্যারে উপাদানগুলিতে অপারেটরকে constant = ANY (array_expression)
সমর্থনকারী কেবল সূচক হিসাবে ব্যবহৃত হলে যোগ্যতা অর্জন করবে এবং এর জন্য আমাদের একটি পরিবহণ প্রয়োজন । জিআইএন সূচকগুলি বাইরে।=
= ANY()
পোস্টগ্র্রেস বর্তমানে এটি থেকে একটি জিআইএন-ইনডেক্সযোগ্য প্রকাশ পেতে যথেষ্ট স্মার্ট নয়। নতুনদের জন্য, constant = ANY (array_expression)
হয় সম্পূর্ণরূপে সমতুল্য না করতে array_expression @> ARRAY[constant]
। অ্যারে অপারেটররা কোনও ত্রুটি ফিরিয়ে দেয় যদি কোনও এনএলএল উপাদান যুক্ত থাকে, অন্যদিকে ANY
কনস্ট্রাক্ট দু'পক্ষেই NULL নিয়ে কাজ করতে পারে। এবং ডেটা টাইপ মিলের জন্য বিভিন্ন ফলাফল রয়েছে।
সম্পর্কিত উত্তর:
Asides
মান ছাড়াই integer
অ্যারে ( int4
, না int2
বা int8
) এর সাথে কাজ করার সময় NULL
(যেমন আপনার উদাহরণ থেকে বোঝা যায়) অতিরিক্ত মডিউল বিবেচনা করুন intarray
, এটি বিশেষায়িত, দ্রুত অপারেটর এবং সূচক সমর্থন সরবরাহ করে। দেখা:
UNIQUE
আপনার প্রশ্নের যে প্রতিবন্ধকতা উত্তরহীন হয়েছে তার সীমাবদ্ধতার জন্য : এটি সম্পূর্ণ অ্যারের মান (যেমন আপনার সন্দেহজনক) তে বিটি সূচক দিয়ে প্রয়োগ করা হয়েছে এবং উপাদানগুলির অনুসন্ধানে মোটেই সহায়তা করে না । বিবরণ:
jsonb
ব্যবহার এবং সূচকগুলি ব্যবহার করা কি সম্ভব ? postgresql.org/docs/9.5/static/funifications-json.html এবং postgresql.org/docs/9.5/static/datatype-json.html#JSON-INDEXING