পোস্টগ্রেএসকিউএল-তে কোনও সূচকের জন্য তৈরি করার বিবৃতি দেখানোর কোনও উপায় আছে কি?


14

পোস্টগ্র্রেএসকিউএল-এ আমাকে একটি সূচি পুনরায় তৈরি করতে হবে যা সূচক ব্লাটে ভুগেছে। যেহেতু আমার সূচকটি তৈরি হওয়ার সময় ব্যবহারযোগ্য হওয়ার প্রয়োজন, তাই আমি REINDEX ব্যবহার করতে পারি না। আমি একটি নতুন নাম দিয়ে সূচকটি পুনরায় তৈরি করতে যাচ্ছি এবং তারপরে পুরানোটি নামিয়ে দেব। এসকিউএল বিবৃতিটি দেখার কোনও উপায় আছে যা সূচি তৈরি করতে ব্যবহৃত হয়েছিল যাতে আমি কেবল এটি অনুলিপি করতে পারি?



1
যোগ করার জন্য মনে রাখুন CONCURRENTLYকরার CREATE INDEXকমান্ড, তাই আপনি টেবিলের উপর একটি একচেটিয়া লক গ্রহণ না।
ক্রেগ রিঞ্জার 13

উত্তর:


26

প্রকৃতপক্ষে কেবল pg_indexesসিস্টেম ক্যাটালগ ভিউটি নিম্নরূপ অনুসন্ধান করুন :

SELECT indexdef FROM pg_indexes WHERE indexname = '...'

এবং এটি এসকিউএল বিবৃতিটি সংজ্ঞায়িত করার জন্য আপনাকে ফিরে পাওয়া উচিত।


4
নোট করুন যে সূচিপত্রের নামগুলি স্কিমা অনুযায়ী কেবল অনন্য । আপনি যোগ করতে পারেন AND schemaname = 'myschema'
এরউইন ব্র্যান্ডসটেটার

0

হ্যাঁ, সূচকটি পুনরায় তৈরি করতে পূর্ণ এসকিউএল বিবৃতি সিস্টেম ক্যাটালগে রয়েছে। আমি যে সহজ উপায়টি ভাবতে পারি তা হ'ল pg_dump / pg_restore:

$ pg_dump -F c | pg_restore -I <your_index_name>

4
যদি ডাটাবেসটি বড় হয় তবে এটি একটি ওভারকিল হতে পারে :) আপনি -sডেটা বাদ দেওয়ার জন্য যোগ করতে চাইতে পারেন এবং যদি জানা থাকে তবে এর সাথে টেবিলের নাম -t
dezso


-1

indexdefআংশিক সূচকের ক্ষেত্রে তৈরি করার বিবৃতিটির মতো এখনও ঠিক একই নয়। উদাহরণস্বরূপ, যদি আমরা নিম্নলিখিত বিবৃতি দিয়ে একটি সূচক তৈরি করি: CREATE INDEX item_orgunit_idx ON items (orgunit_id) WHERE type IN ('invoice', 'purchaseorder', 'beanpayment');

পোস্টগ্রাগুলি নিম্নলিখিত সূচকগুলি তৈরি করবে: CREATE INDEX item_orgunit_idx ON public.items USING btree (orgunit_id) WHERE ((type)::text = ANY ((ARRAY['invoice'::character varying, 'purchaseorder'::character varying, 'beanpayment'::character varying])::text[]))

পোস্টগ্র্রেস ইন্ডেক্সডেফের সমস্ত অনুমানযুক্ত ধরণের রয়েছে এবং সম্ভবত এটি আরও ভাল, তবে আমাদের ওআরএম দুটি সূচকের তুলনা করছে যেখানে ক্লজ এবং যখন আমরা মাইগ্রেশন স্ক্রিপ্টগুলি তৈরি করি তখন এটি আলাদা different যা আমাদের জন্য সমস্যা।


এটি প্রশ্নের কোনও উত্তর দেয় না।
লরেঞ্জ আলবে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.