| ÐокÑменÑаÑÐ¸Ñ Ð¿Ð¾ PostgreSQL 9.4.1 | |||
|---|---|---|---|
| ÐÑед. | УÑÐ¾Ð²ÐµÐ½Ñ Ð²ÑÑе | Ðлава 18. ÐаÑÑÑойка ÑеÑвеÑа | След. |
18.7. ÐланиÑование запÑоÑов
18.7.1. ÐонÑигÑÑаÑÐ¸Ñ Ð¼ÐµÑодов планиÑовÑика
ÐÑи паÑамеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии даÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð³ÑÑбо влиÑÑÑ Ð½Ð° планÑ, вÑбиÑаемÑе опÑимизаÑоÑом запÑоÑов. ÐÑли авÑомаÑиÑеÑки вÑбÑаннÑй опÑимизаÑоÑом план конкÑеÑного запÑоÑа оказалÑÑ Ð½ÐµÐ¾Ð¿ÑималÑнÑм, в каÑеÑÑве вÑеменного ÑеÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ воÑполÑзоваÑÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из ÑÑÐ¸Ñ Ð¿Ð°ÑамеÑÑов и вÑнÑдиÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик вÑбÑаÑÑ Ð´ÑÑгой план. УлÑÑÑиÑÑ ÐºÐ°ÑеÑÑво планов, вÑбиÑаемÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑиком, можно и более Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑими ÑпоÑобами, в ÑаÑÑноÑÑи, ÑкоÑÑекÑиÑоваÑÑ ÐºÐ¾Ð½ÑÑанÑÑ ÑÑоимоÑÑи (Ñм. ÐодÑаздел 18.7.2), вÑполниÑÑ ANALYZE вÑÑÑнÑÑ, измениÑÑ Ð·Ð½Ð°Ñение паÑамеÑÑа конÑигÑÑаÑии default_statistics_target и ÑвелиÑиÑÑ Ð¾Ð±ÑÑм ÑÑаÑиÑÑики, ÑобиÑаемой Ð´Ð»Ñ Ð¾ÑделÑнÑÑ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ALTER TABLE SET STATISTICS.
- enable_bitmapscan (boolean)
ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ биÑовой каÑÑе. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение on (вкл.).
- enable_hashagg (boolean)
ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов агÑегиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение on (вкл.).
- enable_hashjoin (boolean)
ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение on (вкл.).
- enable_indexscan (boolean)
ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ индекÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение on (вкл.).
- enable_indexonlyscan (boolean)
ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑолÑко индекÑа. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение on (вкл.).
- enable_material (boolean)
ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование маÑеÑиализаÑии пÑи планиÑовании запÑоÑов. ÐолноÑÑÑÑ Ð¸ÑклÑÑиÑÑ Ð¼Ð°ÑеÑиализаÑÐ¸Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, но пÑи вÑклÑÑении ÑÑого паÑамеÑÑа планиÑовÑик не бÑÐ´ÐµÑ Ð²ÑÑавлÑÑÑ ÑÐ·Ð»Ñ Ð¼Ð°ÑеÑиализаÑии, за иÑклÑÑением ÑлÑÑаев, где они ÑÑебÑÑÑÑÑ Ð´Ð»Ñ Ð¿ÑавилÑноÑÑи. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение on (вкл.).
- enable_mergejoin (boolean)
ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ ÑлиÑнием. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение on (вкл.).
- enable_nestloop (boolean)
ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планиÑовÑиком планов ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñми Ñиклами. ÐолноÑÑÑÑ Ð¸ÑклÑÑиÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñе ÑÐ¸ÐºÐ»Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, но пÑи вÑклÑÑении ÑÑого паÑамеÑÑа планиÑовÑик не бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð°Ð½Ð½Ñй меÑод, еÑли можно пÑимениÑÑ Ð´ÑÑгие. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение on.
- enable_seqscan (boolean)
ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планиÑовÑиком планов поÑледоваÑелÑного ÑканиÑованиÑ. ÐолноÑÑÑÑ Ð¸ÑклÑÑиÑÑ Ð¿Ð¾ÑледоваÑелÑное ÑканиÑование невозможно, но пÑи вÑклÑÑении ÑÑого паÑамеÑÑа планиÑовÑик не бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð°Ð½Ð½Ñй меÑод, еÑли можно пÑимениÑÑ Ð´ÑÑгие. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение on.
- enable_sort (boolean)
ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планиÑовÑиком Ñагов Ñ Ñвной ÑоÑÑиÑовкой. ÐолноÑÑÑÑ Ð¸ÑклÑÑиÑÑ ÑвнÑÑ ÑоÑÑиÑÐ¾Ð²ÐºÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, но пÑи вÑклÑÑении ÑÑого паÑамеÑÑа планиÑовÑик не бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð°Ð½Ð½Ñй меÑод, еÑли можно пÑимениÑÑ Ð´ÑÑгие. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение on.
- enable_tidscan (boolean)
ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð¸ÑполÑзование планов ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ TID. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение on (вкл.).
18.7.2. ÐонÑÑанÑÑ ÑÑоимоÑÑи Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика
ÐеÑеменнÑе ÑÑоимоÑÑи, опиÑаннÑе в данном Ñазделе, задаÑÑÑÑ Ð¿Ð¾ пÑоизволÑной Ñкале. ÐнаÑение имеÑÑ ÑолÑко Ð¸Ñ Ð¾ÑноÑениÑ, поÑÑÐ¾Ð¼Ñ Ñмножение или деление вÑÐµÑ Ð¿ÐµÑеменнÑÑ Ð½Ð° один коÑÑÑиÑÐ¸ÐµÐ½Ñ Ð½Ð¸ÐºÐ°Ðº не повлиÑÐµÑ Ð½Ð° вÑÐ±Ð¾Ñ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑи пеÑеменнÑе опÑеделÑÑÑÑÑ Ð¾ÑноÑиÑелÑно ÑÑоимоÑÑи ÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾ÑледоваÑелÑной ÑÑÑаниÑÑ: Ñо еÑÑÑ, пеÑеменнÑÑ seq_page_cost Ñдобно задаÑÑ Ñавной 1.0, а вÑе дÑÑгие пеÑеменнÑе ÑÑоимоÑÑи опÑеделиÑÑ Ð¾ÑноÑиÑелÑно неÑ. Ðо пÑи желании можно иÑполÑзоваÑÑ Ð¸ дÑÑгÑÑ ÑкалÑ, напÑимеÑ, вÑÑазиÑÑ Ð² миллиÑекÑÐ½Ð´Ð°Ñ ÑакÑиÑеÑкое вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿ÑоÑов на конкÑеÑной маÑине.
ÐамеÑание: Ð ÑожалениÑ, какого-либо ÑÑÑко опÑеделÑнного ÑпоÑоба опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¸Ð´ÐµÐ°Ð»ÑнÑÑ Ð·Ð½Ð°Ñений ÑÑоимоÑÑи не ÑÑÑеÑÑвÑеÑ. ÐÑÑÑе вÑего вÑбиÑаÑÑ Ð¸Ñ ÐºÐ°Ðº ÑÑедние показаÑели пÑи вÑполнении Ñелого ÑÑда ÑазнообÑазнÑÑ Ð·Ð°Ð¿ÑоÑов, коÑоÑÑе бÑÐ´ÐµÑ Ð¾Ð±ÑабаÑÑваÑÑ ÐºÐ¾Ð½ÐºÑеÑÐ½Ð°Ñ Ð¡Ð£ÐÐ. ÐÑо знаÑиÑ, ÑÑо менÑÑÑ Ð¸Ñ Ð¿Ð¾ ÑезÑлÑÑаÑам вÑего неÑколÑÐºÐ¸Ñ ÑкÑпеÑименÑов оÑÐµÐ½Ñ ÑиÑкованно.
- seq_page_cost (floating point)
ÐадаÑÑ Ð¿ÑиблизиÑелÑнÑÑ ÑÑоимоÑÑÑ ÑÑÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ ÑÑÑаниÑÑ Ñ Ð´Ð¸Ñка, коÑоÑое вÑполнÑеÑÑÑ Ð² ÑеÑии поÑледоваÑелÑнÑÑ ÑÑений. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 1.0. ÐÑо знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ индекÑов в опÑеделÑнном ÑаблиÑном пÑоÑÑÑанÑÑве, ÑÑÑановив одноимÑннÑй паÑамеÑÑ ÑаблиÑного пÑоÑÑÑанÑÑва (Ñм. ALTER TABLESPACE).
- random_page_cost (floating point)
ÐадаÑÑ Ð¿ÑиблизиÑелÑнÑÑ ÑÑоимоÑÑÑ ÑÑÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ пÑоизволÑной ÑÑÑаниÑÑ Ñ Ð´Ð¸Ñка. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 4.0. ÐÑо знаÑение можно пеÑеопÑеделиÑÑ Ð´Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ индекÑов в опÑеделÑнном ÑаблиÑном пÑоÑÑÑанÑÑве, ÑÑÑановив одноимÑннÑй паÑамеÑÑ ÑаблиÑного пÑоÑÑÑанÑÑва (Ñм. ALTER TABLESPACE).
ÐÑи ÑменÑÑении ÑÑого знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ оÑноÑÐµÐ½Ð¸Ñ Ðº seq_page_cost ÑиÑÑема наÑÐ¸Ð½Ð°ÐµÑ Ð¿ÑедпоÑиÑаÑÑ ÑканиÑование по индекÑÑ; пÑи ÑвелиÑении Ñакое ÑканиÑование ÑÑановиÑÑÑ Ð±Ð¾Ð»ÐµÐµ доÑогоÑÑоÑÑим. Ðба ÑÑи знаÑÐµÐ½Ð¸Ñ Ñакже можно ÑвелиÑиÑÑ Ð¸Ð»Ð¸ ÑменÑÑиÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÑÑоимоÑÑÑ Ð¾Ð¿ÐµÑаÑий ввода/вÑвода по оÑноÑÐµÐ½Ð¸Ñ Ðº ÑÑоимоÑÑи пÑоÑеÑÑоÑнÑÑ Ð¾Ð¿ÐµÑаÑий, коÑоÑÐ°Ñ Ð¾Ð¿ÑеделÑеÑÑÑ ÑледÑÑÑими паÑамеÑÑами.
ÐÑоизволÑнÑй доÑÑÑп к Ð¼ÐµÑ Ð°Ð½Ð¸ÑеÑÐºÐ¾Ð¼Ñ Ð´Ð¸ÑÐºÐ¾Ð²Ð¾Ð¼Ñ Ñ ÑанилиÑÑ Ð¾Ð±ÑÑно гоÑаздо доÑоже поÑледоваÑелÑного доÑÑÑпа, более Ñем в ÑеÑÑÑе Ñаза. Ðднако по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑбÑан неболÑÑой коÑÑÑиÑÐ¸ÐµÐ½Ñ (4.0), в пÑедположении, ÑÑо болÑÑой обÑÑм даннÑÑ Ð¿Ñи пÑоизволÑном доÑÑÑпе, напÑимеÑ, пÑи ÑÑении индекÑа, окажеÑÑÑ Ð² кеÑе. Таким обÑазом, можно ÑÑиÑаÑÑ, ÑÑо знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸ÑÑÐµÑ ÑиÑÑаÑиÑ, когда пÑоизволÑнÑй доÑÑÑп в 40 Ñаз медленнее поÑледоваÑелÑного, но 90% опеÑаÑий пÑоизволÑного ÑÑÐµÐ½Ð¸Ñ ÑдовлеÑвоÑÑÑÑÑÑ Ð¸Ð· кеÑа.
ÐÑли Ð²Ñ ÑÑиÑаеÑе, ÑÑо Ð´Ð»Ñ Ð²Ð°Ñей ÑабоÑей нагÑÑзки пÑоÑÐµÐ½Ñ Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð½Ð¸Ð¹ не доÑÑÐ¸Ð³Ð°ÐµÑ 90%, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑвелиÑиÑÑ Ð¿Ð°ÑамеÑÑ random_page_cost, ÑÑÐ¾Ð±Ñ Ð¾Ð½ болÑÑе ÑооÑвеÑÑÑвовал ÑеалÑной ÑÑоимоÑÑи пÑоизволÑного ÑÑениÑ. РнапÑоÑив, еÑли ваÑи даннÑе могÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¿Ð¾Ð¼ÐµÑÑиÑÑÑÑ Ð² кеÑе, напÑимеÑ, когда ÑÐ°Ð·Ð¼ÐµÑ Ð±Ð°Ð·Ñ Ð¼ÐµÐ½ÑÑе обÑего обÑÑма памÑÑи ÑеÑвеÑа, Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ ÑмÑÑл ÑменÑÑиÑÑ random_page_cost. С Ñ ÑанилиÑем, Ñ ÐºÐ¾ÑоÑого ÑÑоимоÑÑÑ Ð¿ÑоизволÑного ÑÑÐµÐ½Ð¸Ñ Ð½Ðµ намного вÑÑе поÑледоваÑелÑного, как напÑимеÑ, Ñ ÑвеÑдоÑелÑнÑÑ Ð½Ð°ÐºÐ¾Ð¿Ð¸Ñелей, Ñак же лÑÑÑе вÑбÑаÑÑ Ð¼ÐµÐ½ÑÑее знаÑение random_page_cost.
ÐодÑказка: ХоÑÑ ÑиÑÑема позволÑÐµÑ ÑделаÑÑ random_page_cost менÑÑе, Ñем seq_page_cost, ÑÑо лиÑено ÑизиÑеÑкого ÑмÑÑла. Ðднако ÑделаÑÑ Ð¸Ñ ÑавнÑми Ð¸Ð¼ÐµÐµÑ ÑмÑÑл, еÑли база даннÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ ÐºÐµÑиÑÑеÑÑÑ Ð² ÐÐУ, Ñак как в ÑÑом ÑлÑÑае Ñ Ð¾Ð±ÑаÑением к ÑÑÑаниÑам в пÑоизволÑном поÑÑдке не ÑвÑÐ·Ð°Ð½Ñ Ð½Ð¸ÐºÐ°ÐºÐ¸Ðµ дополниÑелÑнÑе издеÑжки. ÐÑоме Ñого, Ð´Ð»Ñ ÑилÑно загÑÑженной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð±Ð° ÑÑÐ¸Ñ Ð¿Ð°ÑамеÑÑа ÑледÑÐµÑ Ð¿Ð¾Ð½Ð¸Ð·Ð¸ÑÑ Ð¿Ð¾ оÑноÑÐµÐ½Ð¸Ñ Ðº ÑÑоимоÑÑи пÑоÑеÑÑоÑнÑÑ Ð¾Ð¿ÐµÑаÑий, Ñак как ÑÑоимоÑÑÑ Ð²ÑбоÑки ÑÑÑаниÑÑ, Ñже Ð½Ð°Ñ Ð¾Ð´ÑÑейÑÑ Ð² ÐÐУ, оказÑваеÑÑÑ Ð½Ð°Ð¼Ð½Ð¾Ð³Ð¾ менÑÑе, Ñем обÑÑно.
- cpu_tuple_cost (floating point)
ÐадаÑÑ Ð¿ÑиблизиÑелÑнÑÑ ÑÑоимоÑÑÑ Ð¾Ð±ÑабоÑки каждой ÑÑÑоки пÑи вÑполнении запÑоÑа. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 0.01.
- cpu_index_tuple_cost (floating point)
ÐадаÑÑ Ð¿ÑиблизиÑелÑнÑÑ ÑÑоимоÑÑÑ Ð¾Ð±ÑабоÑки каждой запиÑи индекÑа пÑи ÑканиÑовании индекÑа. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 0.005.
- cpu_operator_cost (floating point)
ÐадаÑÑ Ð¿ÑиблизиÑелÑнÑÑ ÑÑоимоÑÑÑ Ð¾Ð±ÑабоÑки опеÑаÑоÑа или ÑÑнкÑии пÑи вÑполнении запÑоÑа. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 0.0025.
- effective_cache_size (integer)
ÐпÑеделÑÐµÑ Ð¿ÑедÑÑавление планиÑовÑика об ÑÑÑекÑивном ÑазмеÑе диÑкового кеÑа, доÑÑÑпном Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ запÑоÑа. ÐÑо пÑедÑÑавление влиÑÐµÑ Ð½Ð° оÑÐµÐ½ÐºÑ ÑÑоимоÑÑи иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа; Ñем вÑÑе ÑÑо знаÑение, Ñем болÑÑе веÑоÑÑноÑÑÑ, ÑÑо бÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ ÑканиÑование по индекÑÑ, Ñем ниже, Ñем более веÑоÑÑно, ÑÑо бÑÐ´ÐµÑ Ð²ÑбÑано поÑледоваÑелÑное ÑканиÑование. ÐÑи ÑÑÑановке ÑÑого паÑамеÑÑа ÑледÑÐµÑ ÑÑиÑÑваÑÑ Ð¸ обÑÑм ÑазделÑемÑÑ Ð±ÑÑеÑов PostgreSQL, и пÑоÑÐµÐ½Ñ Ð´Ð¸Ñкового кеÑа ÑдÑа, коÑоÑÑй бÑдÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ ÑÐ°Ð¹Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ PostgreSQL. ÐÑоме Ñого, ÑледÑÐµÑ Ð¿ÑинÑÑÑ Ð²Ð¾ внимание ожидаемое ÑиÑло паÑаллелÑнÑÑ Ð·Ð°Ð¿ÑоÑов к ÑазнÑм ÑаблиÑам, Ñак как обÑий ÑÐ°Ð·Ð¼ÐµÑ Ð±ÑÐ´ÐµÑ ÑазделÑÑÑÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½Ðµ влиÑÐµÑ Ð½Ð° ÑÐ°Ð·Ð¼ÐµÑ ÑазделÑемой памÑÑи, вÑделÑемой PostgreSQL, или ÑÐ°Ð·Ð¼ÐµÑ ÑезеÑвиÑÑемого кеÑа ÑдÑа; он иÑполÑзÑеÑÑÑ ÑолÑко Ð´Ð»Ñ Ñелей оÑенки ÑÑоимоÑÑи. ÐÑи ÑÑом ÑиÑÑема не ÑÑиÑÑваеÑ, ÑÑо даннÑе могÑÑ Ð¾ÑÑаваÑÑÑÑ Ð² диÑковом кеÑе Ð¾Ñ Ð·Ð°Ð¿ÑоÑа к запÑоÑÑ. ÐнаÑение ÑÑого паÑамеÑÑа по ÑмолÑÐ°Ð½Ð¸Ñ â 4 гигабайÑа (4GB).
18.7.3. ÐенеÑиÑеÑкий опÑимизаÑÐ¾Ñ Ð·Ð°Ð¿ÑоÑов
ÐенеÑиÑеÑкий опÑимизаÑÐ¾Ñ Ð·Ð°Ð¿ÑоÑов (GEnetic Query Optimizer, GEQO) оÑÑÑеÑÑвлÑÐµÑ Ð¿Ð»Ð°Ð½Ð¸Ñование запÑоÑов, пÑименÑÑ ÑвÑиÑÑиÑеÑкий поиÑк. ÐÑо позволÑÐµÑ ÑокÑаÑиÑÑ Ð²ÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑложнÑÑ Ð·Ð°Ð¿ÑоÑов (в коÑоÑÑÑ ÑоединÑÑÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво оÑноÑений), Ñеной Ñого, ÑÑо иногда полÑÑеннÑе Ð¿Ð»Ð°Ð½Ñ ÑÑÑÑпаÑÑ Ð¿Ð¾ каÑеÑÑÐ²Ñ Ð¿Ð»Ð°Ð½Ð°Ð¼, вÑбиÑаемÑм пÑи полном пеÑебоÑе. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº Ðлаве 54.
- geqo (boolean)
ÐклÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ оÑклÑÑÐ°ÐµÑ Ð³ÐµÐ½ÐµÑиÑеÑкÑÑ Ð¾Ð¿ÑимизаÑÐ¸Ñ Ð·Ð°Ð¿ÑоÑов. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½Ð° вклÑÑена. РпÑоизводÑÑвенной ÑÑеде ÐµÑ Ð»ÑÑÑе не оÑклÑÑаÑÑ; более гибко ÑпÑавлÑÑÑ GEQO можно Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿ÐµÑеменной geqo_threshold.
- geqo_threshold (integer)
ÐадаÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное ÑиÑло ÑлеменÑов во FROM, пÑи коÑоÑом Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿ÑоÑа бÑÐ´ÐµÑ Ð¿ÑивлеÑÑн генеÑиÑеÑкий опÑимизаÑоÑ. (ÐамеÑÑÑе, ÑÑо конÑÑÑÑкÑÐ¸Ñ FULL OUTER JOIN ÑÑиÑаеÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ ÑлеменÑом ÑпиÑка FROM.) ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 12. ÐÐ»Ñ Ð±Ð¾Ð»ÐµÐµ пÑоÑÑÑÑ Ð·Ð°Ð¿ÑоÑов ÑаÑÑо лÑÑÑе иÑполÑзоваÑÑ Ð¾Ð±ÑÑнÑй планиÑовÑик, пÑоизводÑÑий полнÑй пеÑебоÑ, но Ð´Ð»Ñ Ð·Ð°Ð¿ÑоÑов Ñо множеÑÑвом ÑÐ°Ð±Ð»Ð¸Ñ Ð¿Ð¾Ð»Ð½Ñй пеÑÐµÐ±Ð¾Ñ Ð·Ð°Ð¹Ð¼ÑÑ ÑлиÑком много вÑемени, ÑаÑе гоÑаздо болÑÑе, Ñем бÑÐ´ÐµÑ Ð¿Ð¾ÑеÑÑно из-за вÑбоÑа не Ñамого ÑÑÑекÑивного плана. Таким обÑазом, огÑаниÑение по ÑазмеÑÑ Ð·Ð°Ð¿ÑоÑа даÑÑ ÑдобнÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑпÑавлÑÑÑ GEQO.
- geqo_effort (integer)
УпÑавлÑÐµÑ Ð²ÑбоÑом Ð¼ÐµÐ¶Ð´Ñ ÑокÑаÑением вÑеменем планиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ повÑÑением каÑеÑÑва плана запÑоÑа в GEQO. ÐÑо знаÑение должна задаваÑÑÑÑ ÑелÑм ÑиÑлом Ð¾Ñ 1 до 10. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ñавно пÑÑи. Чем болÑÑе знаÑение ÑÑого паÑамеÑÑа, Ñем болÑÑе вÑемени бÑÐ´ÐµÑ Ð¿Ð¾ÑÑаÑено на планиÑование запÑоÑа, но и Ñем болÑÑе веÑоÑÑноÑÑÑ, ÑÑо бÑÐ´ÐµÑ Ð²ÑбÑан ÑÑÑекÑивнÑй план.
ÐаÑамеÑÑ geqo_effort Ñам по Ñебе ниÑего не делаеÑ, он иÑполÑзÑеÑÑÑ ÑолÑко Ð´Ð»Ñ Ð²ÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñений по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ Ð¿ÐµÑеменнÑÑ , влиÑÑÑÐ¸Ñ Ð½Ð° поведение GEQO (они опиÑÐ°Ð½Ñ Ð½Ð¸Ð¶Ðµ). ÐÑи желании ÑÑи пеÑеменнÑе можно пÑоÑÑо ÑÑÑановиÑÑ Ð²ÑÑÑнÑÑ.
- geqo_pool_size (integer)
ÐадаÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ñла Ð´Ð»Ñ Ð°Ð»Ð³Ð¾ÑиÑма GEQO, Ñо еÑÑÑ ÑиÑло оÑобей в генеÑиÑеÑкой попÑлÑÑии. ÐÑо ÑиÑло должно бÑÑÑ Ð½Ðµ менÑÑе двÑÑ , но полезнÑе знаÑÐµÐ½Ð¸Ñ Ð¾Ð±ÑÑно Ð»ÐµÐ¶Ð°Ñ Ð² инÑеÑвале Ð¾Ñ 100 до 1000. ÐÑли оно Ñавно нÑÐ»Ñ (ÑÑо знаÑение по ÑмолÑаниÑ), Ñо Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑее ÑиÑло вÑбиÑаеÑÑÑ, иÑÑ Ð¾Ð´Ñ Ð¸Ð· знаÑÐµÐ½Ð¸Ñ geqo_effort и ÑиÑла ÑÐ°Ð±Ð»Ð¸Ñ Ð² запÑоÑе.
- geqo_generations (integer)
ÐадаÑÑ ÑиÑло поколений Ð´Ð»Ñ GEQO, Ñо еÑÑÑ ÑиÑло иÑеÑаÑий ÑÑого алгоÑиÑма. Ðно должно бÑÑÑ Ð½Ðµ менÑÑе единиÑÑ, но полезнÑе знаÑÐµÐ½Ð¸Ñ Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ Ð² Ñом же диапазоне, ÑÑо и ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ñла. ÐÑли оно Ñавно нÑÐ»Ñ (ÑÑо знаÑение по ÑмолÑаниÑ), Ñо Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑее ÑиÑло вÑбиÑаеÑÑÑ, иÑÑ Ð¾Ð´Ñ Ð¸Ð· geqo_pool_size.
- geqo_selection_bias (floating point)
ÐадаÑÑ Ð¸Ð½ÑенÑивноÑÑÑ ÑелекÑии Ð´Ð»Ñ GEQO, Ñо еÑÑÑ ÑелекÑивное давление в попÑлÑÑии. ÐопÑÑÑимÑе знаÑÐµÐ½Ð¸Ñ Ð»ÐµÐ¶Ð°Ñ Ð² диапазоне Ð¾Ñ 1.50 до 2.00 (ÑÑо знаÑение по ÑмолÑаниÑ).
- geqo_seed (floating point)
ÐадаÑÑ Ð½Ð°ÑалÑное знаÑение Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑаÑоÑа ÑлÑÑайнÑÑ ÑиÑел, коÑоÑÑй пÑименÑеÑÑÑ Ð² GEQO Ð´Ð»Ñ Ð²ÑбоÑа ÑлÑÑайнÑÑ Ð¿ÑÑей в пÑоÑÑÑанÑÑве поиÑка поÑÑдка Ñоединений. ÐÐ¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ Ð·Ð½Ð°Ñение Ð¾Ñ Ð½ÑÐ»Ñ (по ÑмолÑаниÑ) до одного. ÐÑи изменении ÑÑого знаÑÐµÐ½Ð¸Ñ Ð¼ÐµÐ½ÑеÑÑÑ Ð½Ð°Ð±Ð¾Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸ÑÑемÑÑ Ð¿ÑÑей, в ÑезÑлÑÑаÑе Ñего Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½ как более, Ñак и менее опÑималÑнÑй пÑÑÑ.
18.7.4. ÐÑÑгие паÑамеÑÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика
- default_statistics_target (integer)
УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ñелевое огÑаниÑение ÑÑаÑиÑÑики по ÑмолÑаниÑ, ÑаÑпÑоÑÑÑанÑÑÑееÑÑ Ð½Ð° колонки, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ALTER TABLE SET STATISTICS не Ð·Ð°Ð´Ð°Ð½Ñ Ð¾ÑделÑнÑе огÑаниÑениÑ. Чем болÑÑе ÑÑÑановленное знаÑение, Ñем болÑÑе вÑемени ÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ANALYZE, но Ñем вÑÑе Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÐºÐ°ÑеÑÑво оÑенок планиÑовÑика. ÐнаÑение ÑÑого паÑамеÑÑа по ÑмолÑÐ°Ð½Ð¸Ñ — 100. Ðа дополниÑелÑнÑми ÑведениÑми об иÑполÑзовании ÑÑаÑиÑÑики планиÑовÑиком запÑоÑов PostgreSQL обÑаÑиÑеÑÑ Ðº Ð Ð°Ð·Ð´ÐµÐ»Ñ 14.2.
- constraint_exclusion (enum)
УпÑавлÑÐµÑ Ð¸ÑполÑзованием огÑаниÑений ÑÐ°Ð±Ð»Ð¸Ñ Ð´Ð»Ñ Ð¾Ð¿ÑимизаÑии запÑоÑов. ÐопÑÑÑимÑе знаÑÐµÐ½Ð¸Ñ constraint_exclusion: on (задейÑÑвоваÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²ÑÐµÑ ÑаблиÑ), off (никогда не задейÑÑвоваÑÑ Ð¾Ð³ÑаниÑениÑ) и partition (задейÑÑвоваÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ ÑолÑко Ð´Ð»Ñ Ð´Ð¾ÑеÑÐ½Ð¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ подзапÑоÑов UNION ALL). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â partition. Ðно ÑаÑÑо Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ ÑвелиÑиÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ, когда пÑименÑÑÑÑÑ ÑекÑиониÑованнÑе ÑаблиÑÑ Ð¸ наÑледование.
Ðогда даннÑй паÑамеÑÑ ÑазÑеÑÐ°ÐµÑ Ð¸ÑполÑзоваÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ ÑаблиÑÑ, планиÑовÑик ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°ÐµÑ ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð·Ð°Ð¿ÑоÑа Ñ Ð¾Ð³ÑаниÑениÑми CHECK данной ÑаблиÑÑ, и не ÑканиÑÑÐµÑ ÐµÑ, еÑли они оказÑваÑÑÑÑ Ð½ÐµÑовмеÑÑимÑми. ÐапÑимеÑ:
CREATE TABLE parent(key integer, ...); CREATE TABLE child1000(check (key between 1000 and 1999)) INHERITS(parent); CREATE TABLE child2000(check (key between 2000 and 2999)) INHERITS(parent); ... SELECT * FROM parent WHERE key = 2400;
ÐÑли вклÑÑено иÑполÑзование огÑаниÑений, команда SELECT не бÑÐ´ÐµÑ ÑканиÑоваÑÑ ÑаблиÑÑ child1000, в ÑезÑлÑÑаÑе Ñего запÑÐ¾Ñ Ð²ÑполниÑÑÑ Ð±ÑÑÑÑее.
РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¸ÑполÑзование огÑаниÑений-иÑклÑÑений ÑазÑеÑено по ÑмолÑÐ°Ð½Ð¸Ñ ÑолÑко в ÑÑловиÑÑ , возникаÑÑÐ¸Ñ Ð¿Ñи ÑеализаÑии ÑекÑиониÑованнÑÑ ÑаблиÑ. ÐклÑÑение ÑÑой возможноÑÑи Ð´Ð»Ñ Ð²ÑÐµÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð²Ð»ÐµÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе издеÑжки на планиÑование, доволÑно замеÑнÑе Ð´Ð»Ñ Ð¿ÑоÑÑÑÑ Ð·Ð°Ð¿ÑоÑов, но никакого вÑигÑÑÑа ÑÑо не пÑиноÑиÑ. ÐÑли Ð²Ñ Ð½Ðµ пÑименÑеÑе ÑекÑиониÑованнÑе ÑаблиÑÑ, лÑÑÑе вÑего полноÑÑÑÑ Ð¾ÑклÑÑиÑÑ ÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ.
Ðа дополниÑелÑнÑми ÑведениÑми об огÑаниÑениÑÑ -иÑклÑÑениÑÑ Ð¸ ÑекÑиониÑовании ÑÐ°Ð±Ð»Ð¸Ñ Ð¾Ð±ÑаÑиÑеÑÑ Ðº ÐодÑÐ°Ð·Ð´ÐµÐ»Ñ 5.9.4.
- cursor_tuple_fraction (floating point)
ÐадаÑÑ Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика оÑÐµÐ½ÐºÑ Ð¿ÑоÑенÑа ÑÑÑок, коÑоÑÑе бÑдÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ñ ÑеÑез кÑÑÑоÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â 0.1 (10%). ÐÑи менÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик бÑÐ´ÐµÑ Ñклонен иÑполÑзоваÑÑ Ð´Ð»Ñ ÐºÑÑÑоÑов Ð¿Ð»Ð°Ð½Ñ Ñ "бÑÑÑÑÑм ÑÑаÑÑом", позволÑÑÑие полÑÑаÑÑ Ð¿ÐµÑвÑе неÑколÑко ÑÑÑок оÑÐµÐ½Ñ Ð±ÑÑÑÑо, Ñ Ð¾ÑÑ Ð´Ð»Ñ Ð²ÑбоÑки вÑÐµÑ ÑÑÑок Ð¼Ð¾Ð¶ÐµÑ ÑйÑи болÑÑе вÑемени. ÐÑи болÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик ÑÑÑемиÑÑÑ Ð¾Ð¿ÑимизиÑоваÑÑ Ð¾Ð±Ñее вÑÐµÐ¼Ñ Ð·Ð°Ð¿ÑоÑа. ÐÑи макÑималÑном знаÑении, Ñавном 1.0, ÑабоÑа Ñ ÐºÑÑÑоÑами планиÑÑеÑÑÑ Ñак же, как и обÑÑнÑе запÑоÑÑ â минимизиÑÑеÑÑÑ ÑолÑко обÑее вÑемÑ, а не вÑÐµÐ¼Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿ÐµÑвÑÑ ÑÑÑок.
- from_collapse_limit (integer)
ÐадаÑÑ Ð¼Ð°ÐºÑималÑное ÑиÑло ÑлеменÑов в ÑпиÑке FROM, до коÑоÑого планиÑовÑик бÑÐ´ÐµÑ Ð¾Ð±ÑединÑÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñе запÑоÑÑ Ñ Ð²Ð½ÐµÑним запÑоÑом. ÐÑи менÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ ÑокÑаÑаеÑÑÑ Ð²ÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑованиÑ, но план запÑоÑа Ð¼Ð¾Ð¶ÐµÑ ÑÑаÑÑ Ð¼ÐµÐ½ÐµÐµ ÑÑÑекÑивнÑм. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо знаÑение Ñавно воÑÑми. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº Ð Ð°Ð·Ð´ÐµÐ»Ñ 14.3.
ÐÑли ÑÑо знаÑение ÑделаÑÑ ÑавнÑм geqo_threshold или болÑÑе, пÑи Ñаком обÑединении запÑоÑов Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑиÑÑÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик GEQO и в ÑезÑлÑÑаÑе бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен неопÑималÑнÑй план. См. ÐодÑаздел 18.7.3.
- join_collapse_limit (integer)
ÐадаÑÑ Ð¼Ð°ÐºÑималÑное колиÑеÑÑво ÑлеменÑов в ÑпиÑке FROM, до доÑÑÐ¸Ð¶ÐµÐ½Ð¸Ñ ÐºÐ¾ÑоÑого планиÑовÑик бÑÐ´ÐµÑ ÑноÑиÑÑ Ð² него ÑвнÑе конÑÑÑÑкÑии JOIN (за иÑклÑÑением FULL JOIN). ÐÑи менÑÑÐ¸Ñ Ð·Ð½Ð°ÑениÑÑ ÑокÑаÑаеÑÑÑ Ð²ÑÐµÐ¼Ñ Ð¿Ð»Ð°Ð½Ð¸ÑованиÑ, но план запÑоÑа Ð¼Ð¾Ð¶ÐµÑ ÑÑаÑÑ Ð¼ÐµÐ½ÐµÐµ ÑÑÑекÑивнÑм.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑа пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð¼ÐµÐµÑ Ñо же знаÑение, ÑÑо и from_collapse_limit, и ÑÑо пÑиемлемо в болÑÑинÑÑве ÑлÑÑаев. ÐÑи знаÑении, Ñавном 1, пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ JOIN пеÑеÑÑавлÑÑÑÑÑ Ð½Ðµ бÑдÑÑ, Ñак ÑÑо Ñвно заданнÑй в запÑоÑе поÑÑдок Ñоединений опÑÐµÐ´ÐµÐ»Ð¸Ñ ÑакÑиÑеÑкий поÑÑдок, в коÑоÑом бÑдÑÑ ÑоединÑÑÑÑÑ Ð¾ÑноÑениÑ. Так как планиÑовÑик не вÑегда вÑбиÑÐ°ÐµÑ Ð¾Ð¿ÑималÑнÑй поÑÑдок Ñоединений, опÑÑнÑе полÑзоваÑели могÑÑ Ð²Ñеменно задаÑÑ Ð´Ð»Ñ ÑÑой пеÑеменной знаÑение 1, а заÑем Ñвно опÑеделиÑÑ Ð¶ÐµÐ»Ð°ÐµÐ¼Ñй поÑÑдок. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº Ð Ð°Ð·Ð´ÐµÐ»Ñ 14.3.
ÐÑли ÑÑо знаÑение ÑделаÑÑ ÑавнÑм geqo_threshold или болÑÑе, пÑи Ñаком обÑединении запÑоÑов Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑиÑÑÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑик GEQO и в ÑезÑлÑÑаÑе бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен неопÑималÑнÑй план. См. ÐодÑаздел 18.7.3.
| ÐÑед. | ÐаÑало | След. |
| РепликаÑÐ¸Ñ | УÑÐ¾Ð²ÐµÐ½Ñ Ð²ÑÑе | РегиÑÑÑаÑÐ¸Ñ Ð¾Ñибок и пÑоÑоколиÑование ÑабоÑÑ ÑеÑвеÑа |