11.8. ЧаÑÑиÑнÑе индекÑÑ
ЧаÑÑиÑнÑй Ð¸Ð½Ð´ÐµÐºÑ â ÑÑо индекÑ, коÑоÑÑй ÑÑÑоиÑÑÑ Ð¿Ð¾ подмножеÑÑÐ²Ñ ÑÑÑок ÑаблиÑÑ, опÑеделÑÐµÐ¼Ð¾Ð¼Ñ ÑÑловнÑм вÑÑажением (оно назÑваеÑÑÑ Ð¿ÑедикаÑом ÑаÑÑиÑного индекÑа). Такой Ð¸Ð½Ð´ÐµÐºÑ ÑодеÑÐ¶Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи ÑолÑко Ð´Ð»Ñ ÑÑÑок, ÑдовлеÑвоÑÑÑÑÐ¸Ñ Ð¿ÑедикаÑÑ. ЧаÑÑиÑнÑе индекÑÑ Ð´Ð¾Ð²Ð¾Ð»Ñно ÑпеÑиÑиÑнÑ, но в ÑÑде ÑиÑÑаÑий они могÑÑ Ð±ÑÑÑ Ð¾ÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ.
ЧаÑÑиÑнÑе индекÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ, во-пеÑвÑÑ , Ñем, ÑÑо позволÑÑÑ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð¸Ð½Ð´ÐµÐºÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑаÑпÑоÑÑÑанÑннÑÑ Ð·Ð½Ð°Ñений. Так как пÑи поиÑке ÑаÑпÑоÑÑÑанÑнного знаÑÐµÐ½Ð¸Ñ (Ñакого, коÑоÑое ÑодеÑжиÑÑÑ Ð² знаÑиÑелÑном пÑоÑенÑе вÑÐµÑ ÑÑÑок) Ð¸Ð½Ð´ÐµÐºÑ Ð²ÑÑ Ñавно не бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ, Ñ ÑаниÑÑ ÑÑи ÑÑÑоки в индекÑе Ð½ÐµÑ ÑмÑÑла. ÐÑклÑÑив Ð¸Ñ Ð¸Ð· индекÑа, можно ÑменÑÑиÑÑ ÐµÐ³Ð¾ ÑазмеÑ, а знаÑÐ¸Ñ Ð¸ ÑÑкоÑиÑÑ Ð·Ð°Ð¿ÑоÑÑ, иÑполÑзÑÑÑие ÑÑÐ¾Ñ Ð¸Ð½Ð´ÐµÐºÑ. ÐÑо Ñакже Ð¼Ð¾Ð¶ÐµÑ ÑÑкоÑиÑÑ Ð¾Ð¿ÐµÑаÑии Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² ÑаблиÑе, Ñак как Ð¸Ð½Ð´ÐµÐºÑ Ð±ÑÐ´ÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÑÑÑÑÑ Ð½Ðµ вÑегда. Ðозможное пÑименение ÑÑой идеи пÑоиллÑÑÑÑиÑовано в ÐÑимеÑе 11.1.
ÐÑÐ¸Ð¼ÐµÑ 11.1. ÐаÑÑÑойка ÑаÑÑиÑного индекÑа, иÑклÑÑаÑÑего ÑаÑпÑоÑÑÑанÑннÑе знаÑениÑ
ÐÑедположим, ÑÑо Ð²Ñ Ñ ÑаниÑе в базе даннÑÑ Ð¶ÑÑнал обÑаÑений к коÑпоÑаÑÐ¸Ð²Ð½Ð¾Ð¼Ñ ÑайÑÑ. ÐолÑÑÐ°Ñ ÑаÑÑÑ Ð¾Ð±ÑаÑений бÑÐ´ÐµÑ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸ÑÑ Ð¸Ð· диапазона IP-адÑеÑов ваÑей компании, а оÑÑалÑнÑе могÑÑ Ð±ÑÑÑ Ð¾ÑкÑда Ñгодно (напÑимеÑ, к Ð½ÐµÐ¼Ñ Ð¼Ð¾Ð³ÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑÑÑ Ð²Ð½ÐµÑние ÑоÑÑÑдники Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑкими IP). ÐÑли пÑи поиÑке по IP Ð²Ð°Ñ Ð¾Ð±ÑÑно инÑеÑеÑÑÑÑ Ð²Ð½ÐµÑние подклÑÑениÑ, IP-диапазон внÑÑÑенней ÑеÑи компании можно не вклÑÑаÑÑ Ð² индекÑ.
ÐÑÑÑÑ Ñ Ð²Ð°Ñ ÐµÑÑÑ ÑÐ°ÐºÐ°Ñ ÑаблиÑа:
CREATE TABLE access_log (
url varchar,
client_ip inet,
...
);СоздаÑÑ ÑаÑÑиÑнÑй Ð¸Ð½Ð´ÐµÐºÑ Ð´Ð»Ñ Ð½Ð°Ñего пÑимеÑа можно Ñак:
CREATE INDEX access_log_client_ip_ix ON access_log (client_ip)
WHERE NOT (client_ip > inet '192.168.100.0' AND
client_ip < inet '192.168.100.255');Так бÑÐ´ÐµÑ Ð²ÑглÑдеÑÑ ÑипиÑнÑй запÑоÑ, иÑполÑзÑÑÑий ÑÑÐ¾Ñ Ð¸Ð½Ð´ÐµÐºÑ:
SELECT * FROM access_log WHERE url = '/index.html' AND client_ip = inet '212.78.10.32';
Ð ÑледÑÑÑий запÑÐ¾Ñ Ð½Ðµ бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ ÑÑÐ¾Ñ Ð¸Ð½Ð´ÐµÐºÑ:
SELECT * FROM access_log WHERE client_ip = inet '192.168.100.23';
ÐамеÑÑÑе, ÑÑо пÑи Ñаком опÑеделении ÑаÑÑиÑного индекÑа Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾, ÑÑÐ¾Ð±Ñ ÑаÑпÑоÑÑÑанÑннÑе знаÑÐµÐ½Ð¸Ñ Ð±Ñли извеÑÑÐ½Ñ Ð·Ð°Ñанее, Ñак ÑÑо Ñакие индекÑÑ Ð»ÑÑÑе иÑполÑзоваÑÑ, когда ÑаÑпÑеделение даннÑÑ Ð½Ðµ менÑеÑÑÑ. ХоÑÑ Ñакие индекÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ пеÑеÑоздаваÑÑ Ð²ÑÐµÐ¼Ñ Ð¾Ñ Ð²Ñемени, подÑÑÑаиваÑÑÑ Ð¿Ð¾Ð´ новое ÑаÑпÑеделение, ÑÑо знаÑиÑелÑно ÑÑложнÑÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑжкÑ.
Ðо-вÑоÑÑÑ , ÑаÑÑиÑнÑе индекÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ñем, ÑÑо позволÑÑÑ Ð¸ÑклÑÑиÑÑ Ð¸Ð· индекÑа знаÑениÑ, коÑоÑÑе обÑÑно не пÑедÑÑавлÑÑÑ Ð¸Ð½ÑеÑеÑа; ÑÑо пÑоиллÑÑÑÑиÑовано в ÐÑимеÑе 11.2. ÐÑи ÑÑом Ð²Ñ Ð¿Ð¾Ð»ÑÑаеÑе Ñе же пÑеимÑÑеÑÑва, ÑÑо и в пÑедÑдÑÑем ÑлÑÑае, но ÑиÑÑема не ÑÐ¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð²Ð»ÐµÑÑ Â«Ð½ÐµÐ¸Ð½ÑеÑеÑнÑе» знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑÑÐ¾Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ, даже еÑли ÑканиÑование индекÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑÑÑекÑивнÑм. ÐÑевидно, наÑÑÑойка ÑаÑÑиÑнÑÑ Ð¸Ð½Ð´ÐµÐºÑов в ÑÐ°ÐºÐ¸Ñ ÑлÑÑаÑÑ ÑÑебÑÐµÑ ÑÑаÑелÑного анализа и ÑеÑÑиÑованиÑ.
ÐÑÐ¸Ð¼ÐµÑ 11.2. ÐаÑÑÑойка ÑаÑÑиÑного индекÑа, иÑклÑÑаÑÑего неинÑеÑеÑнÑе знаÑениÑ
ÐÑли Ñ Ð²Ð°Ñ ÐµÑÑÑ ÑаблиÑа, в коÑоÑой Ñ ÑанÑÑÑÑ Ð¸ оплаÑеннÑе, и неоплаÑеннÑе ÑÑеÑа, и пÑи ÑÑом неоплаÑеннÑе ÑÑеÑа ÑоÑÑавлÑÑÑ ÑолÑко неболÑÑÑÑ ÑаÑÑÑ Ð²Ñей ÑаблиÑÑ, но пÑедÑÑавлÑÑÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑÑий инÑеÑеÑ, пÑоизводиÑелÑноÑÑÑ Ð·Ð°Ð¿ÑоÑов можно ÑвелиÑиÑÑ, Ñоздав Ð¸Ð½Ð´ÐµÐºÑ ÑолÑко по неоплаÑеннÑм ÑÑеÑам. СделаÑÑ ÑÑо можно ÑледÑÑÑей командой:
CREATE INDEX orders_unbilled_index ON orders (order_nr)
WHERE billed is not true;ÐÑÐ¾Ñ Ð¸Ð½Ð´ÐµÐºÑ Ð±ÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ, напÑÐ¸Ð¼ÐµÑ Ð² Ñаком запÑоÑе:
SELECT * FROM orders WHERE billed is not true AND order_nr < 10000;
Ðднако он Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑименÑÑÑÑÑ Ð² запÑоÑаÑ
, где order_nr вообÑе не иÑполÑзÑеÑÑÑ, напÑимеÑ:
SELECT * FROM orders WHERE billed is not true AND amount > 5000.00;
ÐонеÑно, он бÑÐ´ÐµÑ Ð½Ðµ Ñак ÑÑÑекÑивен, как мог Ð±Ñ Ð±ÑÑÑ ÑаÑÑиÑнÑй Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾ ÑÑолбÑÑ amount, Ñак как ÑиÑÑеме пÑидÑÑÑÑ ÑканиÑоваÑÑ ÐµÐ³Ð¾ Ñеликом. Тем не менее, еÑли неоплаÑеннÑÑ
ÑÑеÑов ÑÑавниÑелÑно мало, вÑигÑаÑÑ Ð¿Ñи поиÑке неоплаÑенного ÑÑÑÑа можно и Ñ Ñаким ÑаÑÑиÑнÑм индекÑом.
ÐамеÑÑÑе, ÑÑо в Ñаком запÑоÑе ÑÑÐ¾Ñ Ð¸Ð½Ð´ÐµÐºÑ Ð½Ðµ бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ:
SELECT * FROM orders WHERE order_nr = 3501;
СÑÑÑ Ñ Ð½Ð¾Ð¼ÐµÑом 3501 Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ, как в ÑиÑле неоплаÑеннÑÑ , Ñак и оплаÑеннÑÑ .
ÐÑимеÑ 11.2 Ñакже показÑваеÑ, ÑÑо индекÑиÑÑемÑй ÑÑÐ¾Ð»Ð±ÐµÑ Ð½Ðµ обÑзаÑелÑно должен ÑовпадаÑÑ Ñо ÑÑолбÑом, иÑполÑзÑемÑм в пÑедикаÑе. Postgres Pro поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑаÑÑиÑнÑе индекÑÑ Ñ Ð¿ÑоизволÑнÑми пÑедикаÑами â главное, ÑÑÐ¾Ð±Ñ Ð² ниÑ
ÑигÑÑиÑовали ÑолÑко ÑÑолбÑÑ Ð¸Ð½Ð´ÐµÐºÑиÑÑемой ÑаблиÑÑ. Ðднако не забÑвайÑе, ÑÑо пÑÐµÐ´Ð¸ÐºÐ°Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑооÑвеÑÑÑвоваÑÑ ÑÑловиÑм запÑоÑов, Ð´Ð»Ñ Ð¾Ð¿ÑимизаÑии коÑоÑÑÑ
пÑедназнаÑаеÑÑÑ Ð´Ð°Ð½Ð½Ñй индекÑ. ТоÑнее, ÑаÑÑиÑнÑй Ð¸Ð½Ð´ÐµÐºÑ Ð±ÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ Ð² запÑоÑе, ÑолÑко еÑли ÑиÑÑема ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð½ÑÑÑ, ÑÑо ÑÑловие WHERE данного запÑоÑа маÑемаÑиÑеÑки ÑводиÑÑÑ Ðº пÑедикаÑÑ Ð¸Ð½Ð´ÐµÐºÑа. Ðо ÑÑÑиÑе, ÑÑо Postgres Pro не ÑÐ¼ÐµÐµÑ Ð´Ð¾ÐºÐ°Ð·ÑваÑÑ Ð¼Ð°ÑемаÑиÑеÑкие ÑÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¾Ð± ÑквиваленÑноÑÑи вÑÑажений, запиÑаннÑÑ
в ÑазнÑÑ
ÑоÑмаÑ
. (СоÑÑавиÑÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Ð´Ð»Ñ ÑакиÑ
доказаÑелÑÑÑв кÑайне Ñложно, и еÑли даже ÑÑо ÑдаÑÑÑÑ, ÑкоÑоÑÑÑ ÐµÑ Ð±ÑÐ´ÐµÑ Ð½ÐµÐ¿Ñиемлема Ð´Ð»Ñ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð° пÑакÑике.) СиÑÑема Ð¼Ð¾Ð¶ÐµÑ Ð²ÑÑвиÑÑ ÑолÑко ÑамÑе пÑоÑÑÑе ÑледÑÑÐ²Ð¸Ñ Ñ Ð½ÐµÑавенÑÑвами; напÑимеÑ, понÑÑÑ, ÑÑо из «x < 1» ÑледÑÐµÑ Â«x < 2»; во вÑеÑ
оÑÑалÑнÑÑ
ÑлÑÑаÑÑ
ÑÑловие пÑедикаÑа должно ÑоÑно ÑовпадаÑÑ Ñ ÑÑловием в пÑедложении WHERE, инаÑе Ð¸Ð½Ð´ÐµÐºÑ Ð±ÑÐ´ÐµÑ ÑÑиÑаÑÑÑÑ Ð½ÐµÐ¿Ð¾Ð´Ñ
одÑÑим. СопоÑÑавление ÑÑловий пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð²Ð¾ вÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿ÑоÑов, а не во вÑÐµÐ¼Ñ Ð²ÑполнениÑ. Ðак ÑледÑÑвие, запÑоÑÑ Ñ Ð¿Ð°ÑамеÑÑами не бÑдÑÑ ÑабоÑаÑÑ Ñ ÑаÑÑиÑнÑми индекÑами. ÐапÑимеÑ, ÑÑловие Ñ Ð¿Ð°ÑамеÑÑом «x < ?» в подгоÑовленном запÑоÑе никогда не бÑÐ´ÐµÑ Ñведено к «x < 2» пÑи вÑеÑ
возможнÑÑ
знаÑениÑÑ
паÑамеÑÑа.
ТÑеÑÑе возможное пÑименение ÑаÑÑиÑнÑÑ Ð¸Ð½Ð´ÐµÐºÑов вообÑе не ÑвÑзано Ñ Ð¸ÑполÑзованием индекÑа в запÑоÑÐ°Ñ . ÐÐ´ÐµÑ Ð·Ð°ÐºÐ»ÑÑаеÑÑÑ Ð² Ñом, ÑÑÐ¾Ð±Ñ ÑоздаÑÑ ÑникалÑнÑй Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾ подмножеÑÑÐ²Ñ ÑÑÑок ÑаблиÑÑ, как в ÐÑимеÑе 11.3. ÐÑо обеÑпеÑÐ¸Ñ ÑникалÑноÑÑÑ ÑÑеди ÑÑÑок, ÑдовлеÑвоÑÑÑÑÐ¸Ñ ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð¿ÑедикаÑа, но никак не бÑÐ´ÐµÑ Ð¾Ð³ÑаниÑиваÑÑ Ð¾ÑÑалÑнÑе.
ÐÑÐ¸Ð¼ÐµÑ 11.3. ÐаÑÑÑойка ÑаÑÑиÑного ÑникалÑного индекÑа
ÐÑедположим, ÑÑо Ñ Ð½Ð°Ñ ÐµÑÑÑ ÑаблиÑа Ñ ÑезÑлÑÑаÑами ÑеÑÑа. ÐÑ Ñ Ð¾Ñим, ÑÑÐ¾Ð±Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑоÑеÑÐ°Ð½Ð¸Ñ Ð¿ÑедмеÑа и Ñелевой ÑÐµÐ¼Ñ Ð±Ñла ÑолÑко одна запиÑÑ Ð¾Ð± ÑÑпеÑном ÑезÑлÑÑаÑе, а неÑдаÑнÑÑ Ð¿Ð¾Ð¿ÑÑок могло бÑÑÑ Ð¼Ð½Ð¾Ð³Ð¾. ÐÐ¾Ñ ÐºÐ°Ðº можно ÑÑого добиÑÑÑÑ:
CREATE TABLE tests (
subject text,
target text,
success boolean,
...
);
CREATE UNIQUE INDEX tests_success_constraint ON tests (subject, target)
WHERE success; ÐÑо подÑ
од бÑÐ´ÐµÑ Ð¾Ñобенно ÑÑÑекÑивнÑм, когда неÑдаÑнÑÑ
попÑÑок бÑÐ´ÐµÑ Ð½Ð°Ð¼Ð½Ð¾Ð³Ð¾ болÑÑе, Ñем ÑдаÑнÑÑ
. Также можно поÑÑебоваÑÑ, ÑÑÐ¾Ð±Ñ Ð² ÑÑолбÑе допÑÑкалÑÑ ÑолÑко один NULL, Ñоздав ÑникалÑнÑй ÑаÑÑиÑнÑй Ð¸Ð½Ð´ÐµÐºÑ Ñ Ð¾Ð³ÑаниÑением IS NULL.
ÐаконеÑ, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑаÑÑиÑнÑÑ Ð¸Ð½Ð´ÐµÐºÑов можно Ñакже пеÑеопÑеделÑÑÑ Ð²ÑбиÑаемÑй ÑиÑÑемой план запÑоÑа. Ðозможно, ÑÑо Ð´Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ Ñ Ð½ÐµÑдаÑнÑм ÑаÑпÑеделением ÑиÑÑема ÑеÑÐ¸Ñ Ð¸ÑполÑзоваÑÑ Ð¸Ð½Ð´ÐµÐºÑ, Ñогда как на Ñамом деле ÑÑо неÑÑÑекÑивно. Ð ÑÑом ÑлÑÑае Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ наÑÑÑоиÑÑ Ñак, ÑÑÐ¾Ð±Ñ Ð² подобнÑÑ Ð·Ð°Ð¿ÑоÑÐ°Ñ Ð¾Ð½ не ÑабоÑал. ÐбÑÑно Postgres Pro пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑазÑмнÑе ÑеÑÐµÐ½Ð¸Ñ Ð¾ÑноÑиÑелÑно пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов (Ñ. е. ÑÑаÑаеÑÑÑ Ð½Ðµ иÑполÑзоваÑÑ Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑаÑпÑоÑÑÑанÑннÑÑ Ð·Ð½Ð°Ñений, Ñак ÑÑо ÑаÑÑиÑнÑй Ð¸Ð½Ð´ÐµÐºÑ Ð² вÑÑепÑиведÑнном пÑимеÑе помог ÑолÑко ÑменÑÑиÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¸Ð½Ð´ÐµÐºÑа, Ð´Ð»Ñ Ð¾Ñказа Ð¾Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа он не ÑÑебовалÑÑ), поÑÑÐ¾Ð¼Ñ ÐºÑайне неÑÑÑекÑивнÑй план Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð²Ð¾Ð´Ð¾Ð¼ Ð´Ð»Ñ ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибке.
ÐомниÑе, ÑÑо наÑÑÑÐ°Ð¸Ð²Ð°Ñ ÑаÑÑиÑнÑй индекÑ, Ð²Ñ Ñем ÑамÑм заÑвлÑеÑе, ÑÑо знаеÑе о даннÑÑ Ð³Ð¾Ñаздо болÑÑе, Ñем планиÑовÑик запÑоÑов. Ð ÑаÑÑноÑÑи, Ð²Ñ Ð·Ð½Ð°ÐµÑе, когда Ñакой Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½. ÐÑо знание обÑзаÑелÑно должно подкÑеплÑÑÑÑÑ Ð¾Ð¿ÑÑом и пониманием Ñого, как ÑабоÑаÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ Ð² Postgres Pro. РболÑÑинÑÑве ÑлÑÑаев пÑеимÑÑеÑÑва ÑаÑÑиÑнÑÑ Ð¸Ð½Ð´ÐµÐºÑов по ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ Ð¾Ð±ÑÑнÑми бÑдÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑми.
УзнаÑÑ Ð¾ ÑаÑÑиÑнÑÑ Ð¸Ð½Ð´ÐµÐºÑÐ°Ñ Ð±Ð¾Ð»ÑÑе можно в ÑледÑÑÑÐ¸Ñ Ð¸ÑÑоÑÐ½Ð¸ÐºÐ°Ñ : The case for partial indexes, Partial indexing in POSTGRES: research project и Generalized Partial Indexes (ÑкопиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð²ÐµÑÑиÑ).