প্রচুর সদৃশ মান সহ কোন সূচকটি ব্যবহার করতে হবে?


14

আসুন কয়েকটি অনুমান করা যাক:

আমার দেখতে টেবিল রয়েছে যা দেখতে দেখতে:

 a | b
---+---
 a | -1
 a | 17
  ...
 a | 21
 c | 17
 c | -3
  ...
 c | 22

আমার সেট সম্পর্কে তথ্য:

  • পুরো টেবিলের আকার 10 ডলার সারি।

  • aকলামের মান সহ আমার কাছে 100 ডলার সারি রয়েছে a, যেমন অন্যান্য মানগুলির (উদাহরণস্বরূপ c) অনুরূপ ।

  • এর অর্থ কলাম 'এ' এর ~ 100k স্বতন্ত্র মান।

  • আমার বেশিরভাগ ক্যোয়ারী একটি প্রদত্ত মানের জন্য সমস্ত বা বেশিরভাগ মান পড়বে, যেমন select sum(b) from t where a = 'c'

  • টেবিলটি এমনভাবে লেখা হয়েছে যাতে পর পরের মানগুলি শারীরিকভাবে নিকটে থাকে (হয় এটি ক্রমে লেখা হয়, বা আমরা ধরে নিই CLUSTERযে সেই টেবিল এবং কলামে ব্যবহৃত হয়েছিল a)।

  • টেবিলটি খুব কমই আপডেট হয় যদি কখনও আপডেট হয়, আমরা কেবল পঠনের গতি সম্পর্কে উদ্বিগ্ন।

  • টেবিলটি তুলনামূলকভাবে সংকীর্ণ (টুপল প্রতি 25 বাইট, + 23 বাইট ওভারহেড) বলুন।

এখন প্রশ্ন হল, আমার কোন ধরণের সূচক ব্যবহার করা উচিত? আমার বোধগম্যতা হ'ল:

  • বিটি্রি আমার সমস্যাটি এখানে বিটি্রি সূচকটি বিশাল হবে যেহেতু আমি জানি যে এটি নকল মান সংরক্ষণ করবে (এটি করতে হবে, যেহেতু এটি টেবিলটি শারীরিকভাবে সাজানো হয়েছে তা ধরে নিতে পারে না)। বিটি ট্রি যদি বিশাল হয় তবে আমি সূচি এবং সারণির যে অংশগুলি সূচকটি নির্দেশ করে তা উভয়ই পড়তে হবে। (আমরা fillfactor = 100সূচকের আকারটি কিছুটা হ্রাস করতে ব্যবহার করতে পারি ))

  • ব্রিন আমার বোধগম্যতা হ'ল অযথা পৃষ্ঠাগুলি পড়ার ব্যয়ে আমার এখানে একটি ছোট সূচক থাকতে পারে। একটি ছোট pages_per_rangeঅর্থের সাহায্যে সূচকটি বৃহত্তর (যা ব্রিনের সাথে একটি সমস্যা কারণ পুরো ইনডেক্সটি পড়তে হবে) এর বড় pages_per_rangeঅর্থ হ'ল আমি প্রচুর অকেজো পৃষ্ঠাগুলি পড়ব। pages_per_rangeএই ট্রেড-অফগুলিকে বিবেচনায় নিয়ে আসে তার কোনও ভাল মান খুঁজে পাওয়ার কোনও জাদু সূত্র আছে কি ?

  • জিন / জিআইএসটি নিশ্চিত নয় যে এগুলি এখানে বেশিরভাগ প্রাসঙ্গিক কারণ তারা বেশিরভাগ পূর্ণ-পাঠ্য অনুসন্ধানের জন্য ব্যবহৃত হয়, তবে আমি এটিও শুনেছি যে তারা নকল কীগুলি ব্যবহার করার ক্ষেত্রে ভাল। একটি GINবা GiSTসূচক এখানে সাহায্য করবে?

আরেকটি প্রশ্ন হ'ল পোস্টগ্রিস কি প্রশ্ন CLUSTERপরিকল্পনাকারী (যেমন প্রাসঙ্গিক প্রারম্ভিক / শেষ পৃষ্ঠাগুলি বাইনারি অনুসন্ধান করে) কোনও টেবিলটি এড (কোনও আপডেট না ধরে) যুক্ত ব্যবহার করবে? কিছুটা সম্পর্কিত, আমি কি কেবল আমার সমস্ত কলামগুলিকে একটি বিটিরিতে সংরক্ষণ করতে এবং টেবিলটি পুরোপুরি ফেলে দিতে পারি (বা সমমানের কিছু অর্জন করতে পারি, আমি বিশ্বাস করি সেগুলি এসকিউএল সার্ভারে ক্লাস্টার ইনডেক্স)? এখানে কিছু সংকর বিটি / ব্রিন সূচক রয়েছে যা এখানে সহায়তা করবে?

আমি বরং আমার মানগুলি সংরক্ষণ করার জন্য অ্যারে ব্যবহার করা এড়াব যেহেতু আমার ক্যোয়ারীটি সেভাবে কম পাঠযোগ্য হবে (আমি বুঝতে পারি এটি টিউপলগুলির সংখ্যা হ্রাস করে টুপল ওভারহেডে 23 বাইটের ব্যয় হ্রাস করবে)।


"বেশিরভাগ পূর্ণ-পাঠ্য অনুসন্ধানের জন্য ব্যবহৃত হয়" জিআইএসটি পোস্টজিআইএস দ্বারা যথেষ্ট পরিমাণে ব্যবহৃত হয়।
jpmc26

উত্তর:


15

BTree

আমার সমস্যাটি এখানে বিটিরি সূচকটি বিশাল হবে যেহেতু এটি সদৃশ মানগুলি নকল মান সংরক্ষণ করবে (এটি খুব বেশি, যেহেতু এটি টেবিলটি শারীরিকভাবে সাজানো হয়েছে তা ধরে নিতে পারে না)। বিটি ট্রি যদি বিশাল হয় তবে আমি সূচি এবং টেবিলের অংশগুলি উভয়ই পড়তে পেরেছি যা সূচকটিও দেখায় ...

অগত্যা নয় - একটি বিট্রি সূচক যা 'আচ্ছাদন' রয়েছে তা দ্রুত পড়ার সময় হবে এবং যদি আপনি এটি চান তবে (অর্থাত্ যদি আপনি অতিরিক্ত সঞ্চয়স্থান বহন করতে পারেন) তবে এটি আপনার সেরা বাজি।

ব্রিন

আমার বোধগম্যতা হল আমি অকেজো পৃষ্ঠাগুলি পড়ার ব্যয়ে এখানে একটি ছোট সূচক রাখতে পারি। একটি ছোট pages_per_rangeঅর্থের সাহায্যে সূচকটি বৃহত্তর (যা ব্রিনের সাথে একটি সমস্যা কারণ পুরো ইনডেক্সটি পড়তে হবে) এর বড় pages_per_rangeঅর্থ হ'ল আমি প্রচুর অকেজো পৃষ্ঠাগুলি পড়ব।

আপনি যদি কভারিং বিটি ইনডেক্সের স্টোরেজ ওভারহেড বহন করতে না পারেন তবে ব্রিন আপনার জন্য আদর্শ, কারণ আপনার কাছে ইতিমধ্যে ক্লাস্টারিং রয়েছে ( ব্রিনের দরকারী হওয়ার পক্ষে এটি গুরুত্বপূর্ণ )। ব্রিন সূচকগুলি খুব ছোট , তাই আপনি যদি একটি উপযুক্ত মান চয়ন করেন তবে সমস্ত পৃষ্ঠাগুলি স্মৃতিতে থাকবে pages_per_range

পেজ_পার_আরঞ্জের ভাল মান খুঁজে পাওয়ার জন্য কি কোনও যাদু সূত্র রয়েছে যা এই ট্রেডগুলি বিবেচনায় নেয়?

কোনও যাদু ফর্মুলা নয়, তবে গড় মান দ্বারা দখল করা গড় আকারের (পৃষ্ঠাগুলিতে) pages_per_range কিছুটা কম দিয়ে শুরু করুন a। আপনি সম্ভবত হ্রাস করার চেষ্টা করছেন: একটি সাধারণ প্রশ্নের জন্য (ব্রিন পৃষ্ঠাগুলির স্ক্যান সংখ্যা) + (স্ক্যান করা হিপ পৃষ্ঠাগুলির সংখ্যা)। সন্ধান Heap Blocks: lossy=nজন্য মৃত্যুদন্ড পরিকল্পনার pages_per_range=1এবং জন্য অন্যান্য মান তুলনা pages_per_range- অর্থাৎ দেখতে কত অপ্রয়োজনীয় গাদা ব্লক স্ক্যান করা হচ্ছে।

জিন / সারকথা

এগুলি এখানে বেশিরভাগ প্রাসঙ্গিক যেহেতু তারা বেশিরভাগ সম্পূর্ণ পাঠ্য অনুসন্ধানের জন্য ব্যবহৃত হয় তা নিশ্চিত নয়, তবে আমি এটিও শুনেছি যে তারা নকল কীগুলি ব্যবহার করার ক্ষেত্রে ভাল। হয় GIN/ GiSTসূচক এখানে সাহায্য করবে?

জিন বিবেচনা করার মতো হতে পারে তবে সম্ভবত জিএসটি নয় - তবে যদি প্রাকৃতিক ক্লাস্টারিং সত্যিই ভাল হয় তবে ব্রিন সম্ভবত আরও ভাল বাজি হয়ে উঠবে।

এখানে আপনার মতো কিছুটা ডামি ডেটার জন্য বিভিন্ন সূচক প্রকারের মধ্যে একটি নমুনা তুলনা করা হল:

টেবিল এবং সূচি:

create table foo(a,b,c) as
select *, lpad('',20)
from (select chr(g) a from generate_series(97,122) g) a
     cross join (select generate_series(1,100000) b) b
order by a;
create index foo_btree_covering on foo(a,b);
create index foo_btree on foo(a);
create index foo_gin on foo using gin(a);
create index foo_brin_2 on foo using brin(a) with (pages_per_range=2);
create index foo_brin_4 on foo using brin(a) with (pages_per_range=4);
vacuum analyze;

সম্পর্কের আকার:

select relname "name", pg_size_pretty(siz) "size", siz/8192 pages, (select count(*) from foo)*8192/siz "rows/page"
from( select relname, pg_relation_size(C.oid) siz
      from pg_class c join pg_namespace n on n.oid = c.relnamespace
      where nspname = current_schema ) z;
নাম | আকার | পৃষ্ঠা | সারি / পৃষ্ঠা
: ----------------- | : ------ | ----: | --------:
foo | 149 এমবি | 19118 | 135
foo_btree_covering | 56 এমবি | 7132 | 364
foo_btree | 56 এমবি | 7132 | 364
foo_gin | 2928 কেবি | 366 | 7103
foo_brin_2 | 264 কেবি | 33 | 78787
foo_brin_4 | 136 কেবি | 17 | 152941

বিট্রি আচ্ছাদন:

explain analyze select sum(b) from foo where a='a';
| QUERY প্ল্যান |
| : ------------------------------------------------- -------------------------------------------------- ------------------------------------------- |
| সমষ্টি (ব্যয় = 3282.57..3282.58 সারি = 1 প্রস্থ = 8) (আসল সময় = 45.942..45.942 সারি = 1 লুপ = 1) |
| -> foo_btree_covering এ foo_btree_covering ব্যবহার করে কেবল সূচক স্ক্যান করুন (ব্যয় = 0.43..3017.80 সারি = 105907 প্রস্থ = 4) (আসল সময় = 0.038..27.286 সারি = 100000 লুপ = 1) |
| সূচকের অবস্থা: (a = 'a' :: পাঠ্য) |
| গাদা ফেচ: 0 |
| পরিকল্পনার সময়: 0.099 এমএস |
| সম্পাদনের সময়: 45.968 এমএস |

সরল বিট্রি:

drop index foo_btree_covering;
explain analyze select sum(b) from foo where a='a';
| QUERY প্ল্যান |
| : ------------------------------------------------- -------------------------------------------------- ----------------------------- |
| সমষ্টি (খরচ = 4064.57..4064.58 সারি = 1 প্রস্থ = 8) (আসল সময় = 54.242..54.242 সারি = 1 লুপ = 1) |
| -> foo এ foo_btree ব্যবহার করে সূচক স্ক্যান (ব্যয় = 0.43..3799.80 সারি = 105907 প্রস্থ = 4) (আসল সময় = 0.037..33.084 সারি = 100000 লুপ = 1) |
| সূচকের অবস্থা: (a = 'a' :: পাঠ্য) |
| পরিকল্পনার সময়: 0.135 এমএস |
| সম্পাদনের সময়: 54.280 এমএস |

BRIN পৃষ্ঠাগুলি_পরে_আরঞ্জ = 4:

drop index foo_btree;
explain analyze select sum(b) from foo where a='a';
| QUERY প্ল্যান |
| : ------------------------------------------------- -------------------------------------------------- ----------------------------- |
| সমষ্টি (খরচ = 21595.38..21595.39 সারি = 1 প্রস্থ = 8) (আসল সময় = 52.455..52.455 সারি = 1 লুপ = 1) |
| -> foo এ বিটম্যাপ হ্যাপ স্ক্যান (ব্যয় = 888.78..21330.61 সারি = 105907 প্রস্থ = 4) (আসল সময় = 2.738..31.967 সারি = 100000 লুপ = 1) |
| পুনঃপরীক্ষা অবস্থা: (a = 'a' :: পাঠ্য) |
| সূচি পুনরায় পরীক্ষা করে সারিগুলি সরানো হয়েছে: 96 |
| গাদা ব্লক: ক্ষয়ক্ষতি = 736 |
| -> foo_brin_4 এ বিটম্যাপ সূচক স্ক্যান (ব্যয় = 0.00..862.30 সারি = 105907 প্রস্থ = 0) (আসল সময় = 2.720..2.720 সারি = 7360 লুপ = 1) |
| সূচকের অবস্থা: (a = 'a' :: পাঠ্য) |
| পরিকল্পনার সময়: 0.101 এমএস |
| কার্যকর করার সময়: 52.501 এমএস |

ব্রিন পৃষ্ঠাগুলি_প্রেম_আরঞ্জ = 2:

drop index foo_brin_4;
explain analyze select sum(b) from foo where a='a';
| QUERY প্ল্যান |
| : ------------------------------------------------- -------------------------------------------------- ----------------------------- |
| সমষ্টি (খরচ = 21659.38..21659.39 সারি = 1 প্রস্থ = 8) (আসল সময় = 53.971..53.971 সারি = 1 লুপ = 1) |
| -> foo- এ বিটম্যাপ হিপ স্ক্যান (ব্যয় = 952.78..21394.61 সারি = 105907 প্রস্থ = 4) (আসল সময় = 5.286..33.492 সারি = 100000 লুপ = 1) |
| পুনঃপরীক্ষা অবস্থা: (a = 'a' :: পাঠ্য) |
| সূচি পুনরায় পরীক্ষা করে সারিগুলি সরানো হয়েছে: 96 |
| গাদা ব্লক: ক্ষয়ক্ষতি = 736 |
| -> foo_brin_2 এ বিটম্যাপ সূচক স্ক্যান (ব্যয় = 0.00..926.30 সারি = 105907 প্রস্থ = 0) (আসল সময় = 5.275..5.275 সারি = 7360 লুপ = 1) |
| সূচকের অবস্থা: (a = 'a' :: পাঠ্য) |
| পরিকল্পনার সময়: 0.095 এমএস |
| কার্যকর করার সময়: 54.016 এমএস |

জিন:

drop index foo_brin_2;
explain analyze select sum(b) from foo where a='a';
| QUERY প্ল্যান |
| : ------------------------------------------------- -------------------------------------------------- ------------------------------ |
| সমষ্টি (খরচ = 21687.38..21687.39 সারি = 1 প্রস্থ = 8) (প্রকৃত সময় = 55.331..55.331 সারি = 1 লুপ = 1) |
| -> foo এ বিটম্যাপ হ্যাপ স্ক্যান (ব্যয় = 980.78..21422.61 সারি = 105907 প্রস্থ = 4) (প্রকৃত সময় = 12.377..33.956 সারি = 100000 লুপ = 1) |
| পুনঃপরীক্ষা অবস্থা: (a = 'a' :: পাঠ্য) |
| হিপ ব্লক: নির্ভুল = 736 |
| -> বিটম্যাপ ইনডেক্স স্ক্যান foo_gin এ (ব্যয় = 0.00..954.30 সারি = 105907 প্রস্থ = 0) (আসল সময় = 12.271..12.271 সারি = 100000 লুপ = 1) |
| সূচকের অবস্থা: (a = 'a' :: পাঠ্য) |
| পরিকল্পনার সময়: 0.118 এমএস |
| সম্পাদনের সময়: 55.366 এমএস |

এখানে ডিবিফিডল


সুতরাং একটি আচ্ছাদন সূচক ডিস্ক স্থান ব্যয় করে পুরো টেবিলটি পড়া এড়িয়ে যাবে? ভাল ট্রেড অফের মতো মনে হচ্ছে। আমি মনে করি আমরা 'সম্পূর্ণ সূচকটি পড়ুন' দ্বারা ব্রিন সূচকটির জন্য একই জিনিসটি বোঝাতে চাইছি (আমি ভুল হলে আমাকে সংশোধন করি), আমি পুরো ব্রিন সূচকটি স্ক্যান করেছিলাম যা আমার মনে হয় ডিবিফিডাল.উকে কি ঘটছে , না?
foo

@ ফুফু " সম্পর্কে (এটি খুব আছে, যেহেতু এটি টেবিলটি শারীরিকভাবে সাজানো হয়েছে তা ধরে নিতে পারে না)" " টেবিলের শারীরিক ক্রম (গুচ্ছ বা না) অপ্রাসঙ্গিক। সূচকের সঠিক ক্রমে মান রয়েছে। তবে পোস্টগ্রিস বি-ট্রি সূচকগুলিতে সমস্ত মান সংরক্ষণ করতে হবে (এবং হ্যাঁ, একাধিকবার)। এগুলিই তাদের নকশা করা হয়েছে। প্রতিটি স্বতন্ত্র মানটি একবারে সংরক্ষণ করা একটি দুর্দান্ত বৈশিষ্ট্য / উন্নতি হবে। আপনি এটি পোস্টগ্রিস বিকাশকারীদের (এবং এমনকি এটি বাস্তবায়নে সহায়তা করতেও) পরামর্শ দিতে পারেন J জ্যাকের মন্তব্য করা উচিত, আমি মনে করি ওরাকলের বি-ট্রি বাস্তবায়ন সেগুলি করে।
ypercubeᵀᴹ

1
@ ফু - আপনি সম্পূর্ণরূপে সঠিক, একটি ব্রিন সূচক সর্বদা পুরো সূচকটি স্ক্যান করে ( pgcon.org/2016/schedule/attachments/… , ২ য় শেষ স্লাইড) - যদিও এটি ফ্রেডের ব্যাখ্যা পরিকল্পনায় প্রদর্শিত হয়নি , তাই কি?
জ্যাক বলছেন topanswers.xyz

2
@ ইয়ার্পেক्यूब - আপনি ওরাকলে কমপ্রেস ব্যবহার করতে পারেন যা প্রতিটি ব্লক প্রতি পৃথক উপসর্গ সংরক্ষণ করে।
জ্যাক বলছেন topanswers.xyz

@ জ্যাকডুগলাস আমি Bitmap Index Scanঅর্থ হিসাবে পড়েছি 'পুরো ব্রিন সূচকটি পড়ুন `তবে সম্ভবত এটি ভুল পড়ে। ওরাকল এর COMPRESSচেহারাতে এমন কিছু লাগবে যা এখানে কার্যকর হবে কারণ এটি বি-গাছের আকার হ্রাস করবে, তবে আমি পিজি দিয়ে আটকেছি!
foo

6

বিটিআর এবং ব্রিন ছাড়াও যা সবচেয়ে বোধগম্য বিকল্প বলে মনে হয়, কিছু অন্যান্য, বহিরাগত বিকল্প যা তদন্তের উপযুক্ত হতে পারে - সেগুলি আপনার ক্ষেত্রে সহায়ক বা নাও হতে পারে:

  • INCLUDEসূচি । সেগুলি হবে - আশা করা যায় - পোস্টগ্রিসের পরবর্তী প্রধান সংস্করণে (10), কোথাও সেপ্টেম্বর 2017 এর আশেপাশে on (a) INCLUDE (b)একটি সূচকের সূচকের মতো একই কাঠামো (a)রয়েছে তবে পাতার পৃষ্ঠাগুলিতে, b(তবে বিন্যস্ত) সমস্ত মান রয়েছে । যার অর্থ আপনি উদাহরণস্বরূপ এটি ব্যবহার করতে পারবেন না SELECT * FROM t WHERE a = 'a' AND b = 2 ;। সূচকটি ব্যবহার করা হতে পারে তবে যখন কোনও (a,b)সূচকটি একক সন্ধানের সাথে মিলে যাওয়া সারিগুলি খুঁজে পাবে, অন্তর্ভুক্ত সূচকটি মানগুলি মেলে a = 'a'এবং যাচাই করে (সম্ভবত আপনার ক্ষেত্রে যেমন 100 কে) মান দিয়ে যায় b
    অন্যদিকে, সূচকটি সূচকের চেয়ে কিছুটা কম প্রশস্ত (a,b)এবং bআপনার ক্যোয়ারী গণনা করার জন্য আপনার ক্রমটির প্রয়োজন নেই SUM(b)। আপনি উদাহরণস্বরূপ থাকতে পারে(a) INCLUDE (b,c,d) যা আপনার 3 টি কলামে সমষ্টিযুক্ত সমান প্রশ্নের জন্য ব্যবহার করা যেতে পারে।

  • ফিল্টারড (আংশিক) সূচি । কোনো প্রস্তাবনা যথাসাধ্য একটু পাগল শোনাচ্ছে যে * প্রথমে:

    CREATE INDEX flt_a  ON t (b) WHERE (a = 'a') ;
    ---
    CREATE INDEX flt_xy ON t (b) WHERE (a = 'xy') ;

    প্রতিটি aমানের জন্য একটি সূচক । আপনার ক্ষেত্রে প্রায় 100K সূচক। যদিও এটি প্রচুর শোনাচ্ছে, বিবেচনা করুন যে প্রতিটি সূচক খুব ছোট হবে, উভয় আকার (সারি সংখ্যা) এবং প্রস্থ (এটি কেবলমাত্র bমান সংরক্ষণ করবে )। অন্য সমস্ত ক্ষেত্রে যদিও, এটি (একসাথে 100 কে সূচকগুলি) (a,b)একটি (b)সূচকের স্পেস ব্যবহার করার সময় বি-ট্রি সূচক হিসাবে কাজ করবে ।
    অসুবিধাটি হ'ল আপনাকে নিজের তৈরি এবং বজায় রাখতে হবে, প্রতিবার aসারণীতে একটি নতুন মান যুক্ত হবে। যেহেতু আপনার টেবিলটি বরং স্থিতিশীল, অনেকগুলি (বা কোনও) সন্নিবেশ / আপডেটগুলি ছাড়াই, এটিকে কোনও সমস্যার মতো মনে হয় না।

  • সংক্ষিপ্ত সারণী। যেহেতু টেবিলটি বরং স্থিতিশীল, আপনি সর্বদা আপনার প্রয়োজন (( sum(b), sum(c), sum(d), avg(b), count(distinct b)ইত্যাদি) খুব সাধারণ সমষ্টিগুলির সাথে একটি সারসংক্ষেপ টেবিল তৈরি এবং পপুলেট করতে পারেন । এটি ছোট হবে (কেবলমাত্র 100K সারি) এবং কেবলমাত্র একবারে পপুলেট করা এবং আপডেট করতে হবে যখন সারণিগুলি সারণি / sertedোকানো / আপডেট / মুখ্য টেবিলটিতে মুছে ফেলা হয়।

*: এই সংস্থাটির ধারণাটি অনুলিপি করা হয়েছে যা তাদের উত্পাদন ব্যবস্থায় 10 মিলিয়ন সূচক চালায়: হিপ: প্রযোজনায় 10 মিলিয়ন পোস্টগ্র্যাস্কিল সূচক (এবং গণনা) চলছে


১ টি আকর্ষণীয় তবে আপনি উল্লেখ করেছেন যে pg 10 এখনও বের হয়নি। 2 আছে শব্দ পাগল (বা 'সাধারণ জ্ঞান' বিরুদ্ধে অন্তত), আমি হিসাবে আপনি বাতলান যেহেতু একটি পঠিত থাকবে যে আমার প্রায় কোনো লিখেছেন কর্মপ্রবাহ সঙ্গে কাজ করতে পারে। ৩. আমার পক্ষে কাজ করবে না, আমি SUMউদাহরণ হিসাবে ব্যবহার করেছি , তবে select ... from t where a = '?' and ??বাস্তবে আমার প্রশ্নগুলি সংশোধন করা যায় না (এগুলি উইজেয়ের মতো আরও ??কিছু ব্যবহারকারী-সংজ্ঞায়িত শর্ত হতে পারে
foo

1
ঠিক আছে, আমরা কী জানি না যদি আমরা সহায়তা করতে পারি না ??;)
ypercubeᵀᴹ

আপনি ফিল্টারড সূচকগুলি উল্লেখ করেন। টেবিল বিভাজন সম্পর্কে কি?
jpmc26

@ jpmc26 মজার, আমি উত্তরে যুক্ত করার কথা ভাবছিলাম যে ফিল্টার করা সূচিগুলির প্রস্তাবনাটি এক অর্থে পার্টিশনের একটি রূপ। বিভাজন এখানেও সহায়ক হতে পারে তবে আমি নিশ্চিত নই। এটির ফলে অনেকগুলি ছোট সূচী / সারণী হয়।
ypercubeᵀᴹ

2
আমি আশা করি আংশিক আচ্ছাদন বিটি সূচকগুলি এখানে পারফরম্যান্সের রাজা হবেন, যেহেতু ডেটা প্রায় আপডেট হয় না। এমনকি যদি এর অর্থ 100k সূচক হয়। মোট সূচকের আকার সবচেয়ে ছোট (কোনও ব্রিন সূচক বাদে তবে পোস্টগ্র্রেস অতিরিক্তভাবে হিপ পৃষ্ঠাগুলি পড়তে এবং ফিল্টার করতে হয়)। সূচক প্রজন্মকে গতিশীল এসকিউএল দিয়ে স্বয়ংক্রিয় করা যায়। সম্পর্কিত সম্পর্কিত বিবৃতি উদাহরণDO
এরউইন ব্র্যান্ডস্টেটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.