рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдПрд╕рдХреНрдпреВрдПрд▓ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рднрд╛рд╖рд╛ рд╣реИ рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ "рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХреНрдпрд╛ рдЪреБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ", рдФрд░ "рдХреИрд╕реЗ" рдЗрд╕реЗ рдХрд░рдирд╛ рд╣реИ - DBMS рдЦреБрдж рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИред SQL рдХреНрд╡реЗрд░реА рдХреЛ рдЙрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди (рдпреЛрдЬрдирд╛) рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЪреБрдирдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХреНрд╡реЗрд░реА рдкреНрд▓рд╛рдирд░ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА DBMS рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рд╡рд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдпреЛрдЬрдирд╛ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХрдИ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ DBMS рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП "рд╕рдВрдХреЗрдд" рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХреЛ рдХреИрд╕реЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдУрдкрди рд╕реЛрд░реНрд╕ рдореЗрдВ, PostgreSQL рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рддрдВрддреНрд░ рдирд╣реАрдВ рдерд╛ред
рдФрд░ рдлрд┐рд░, рдЖрдЦрд┐рд░рдХрд╛рд░, рдХреБрдЫ рдРрд╕рд╛ рд╣реБрдЖ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рд╕рдкрдиреЗ рджреЗрдЦрддреЗ рдереЗ рдФрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ-рдХрд░рддреЗ рдердХ рдЧрдП рдереЗ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдбрд░ рдЧрдП рдереЗред рдЬрд╛рдкрд╛рдиреА
NTT рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ PostgreSQL рдЧреНрд▓рд╛рдЗрдбрд░ рд╕рдВрдХреЗрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рдХрд░реНрдиреЗрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓
pg_hint_plan рдХреЗ рд░реВрдк рдореЗрдВ , PostgreSQL рд╕рдВрд╕реНрдХрд░рдгреЛрдВ 9.1 рдФрд░ 9.2 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдПред рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХреЗрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕реНрдХреИрдирд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, GUC рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рд╕рд╛рдЗрдЯ рд╕реЗ рдЖрдк 9.1 рдФрд░ 9.2 рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмрд┐рд▓реНрдХреБрд▓ рдХреБрдЫ рднреА рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ рдФрд░ рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдУрд╣ рдареАрдХ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирддреА рд╣реИ: & & make рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рддрд░рдг рд╕реЗ рдПрдХ PostgreSQL рджреЗрд╡ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП PostgreSQL рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрд┐рд╕реА SQL рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдкреЛрд╕реНрдЯрдЧреНрд░реИрд╕рдХреНрдХрд▓.рдХреЙрдиреНрдлрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ (рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pg_hint_plan рдЪрд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pg_hint_plan рдЬреЛрдбрд╝реЗрдВ (рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЖрд╡рд╢реНрдпрдХ рд▓реЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрд░ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рддреАрди рдирдП рдЬреАрдпреВрд╕реА рдЪрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ: pg_hint_plan.enable_hint, pg_hint_plan.debug_print, pg_hint_plan.parse -messagesред рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рд╕рдВрдХреЗрдд рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо), рд╢реЗрд╖ рджреЛ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдПред
рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, / * рдФрд░ * / рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рд╕рдВрдХреЗрдд рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ + рд╕рдВрдХреЗрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП / * + SeSScan (t1) * /ред рд╕рдВрдХреЗрдд рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВред
рдЯреЗрдмрд▓ рд╕реНрдХреИрди рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд- SeScan (рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо)
- TidScan (рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо)
- IndexScan (рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо [рд╕реВрдЪрдХрд╛рдВрдХ рдирд╛рдо])
- IndexOnlyScan (рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо [рд╕реВрдЪрдХрд╛рдВрдХ рдирд╛рдо])
- рдмрд┐рдЯрдореИрдкрд╕реНрдХреИрди (рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо [рд╕реВрдЪрдХрд╛рдВрдХ рдирд╛рдо])
- NoSeqScan (рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо)
- NoTidScan (рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо)
- NoIndexScan (рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо)
- NoIndexOnlyScan (рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо)
- NoBitmapScan (рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо)
рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдХреНрд╡реЗрд░реА рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо рдФрд░ рдЙрд╕рдХрд╛ рдЙрдкрдирд╛рдо рджреЛрдиреЛрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд╕рдВрдХреЗрдд- NestLoop (рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА)
- HashJoin (рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА)
- MergeJoin (рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА)
- NoNestLoop (рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА)
- NoHashJoin (рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА)
- NoMergeJoin (рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА)
рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА рдПрдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдЗрдВрдЧрд┐рдд рдХреА рдЧрдИ рд╣реИред рдпрд╣ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдХрдиреЗрдХреНрд╢рди рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рджреЛ рд╕рдВрдХреЗрдд рднреА рдЕрд▓рдЧ рд╕реЗ рджрд┐рдП рдЧрдП рд╣реИрдВ:
- рдЕрдЧреНрд░рдгреА (рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА) - рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХрд╛ рдХреНрд░рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
- рд╕реЗрдЯ (GUC рдорд╛рди) - рдЕрдиреБрд░реЛрдз рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП GUC рдЪрд░ рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред Vobshchem рдХреБрдЫ рднреА рдХреЛрдИ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, GUC рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рдмрд╕ рд╕рдВрдХреЗрдд рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ (рдФрд░ рдЬрд▓реНрджреА рд╕реЗ) рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рд╕рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдпрд╣ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЖрдЗрдП рдЯреЗрд╕реНрдЯ рдЯреЗрдмрд▓, рдЗрдВрдбреЗрдХреНрд╕, рдЖрдВрдХрдбрд╝реЗ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВред
CREATE TABLE test1 AS (SELECT id, (random()*1000)::int AS id_2, random() AS value1, random() AS value2 FROM generate_series(1,1000000) id); CREATE TABLE test2 AS (SELECT id, random() AS value FROM generate_series(1,1000) id); CREATE INDEX test1_id_idx ON test1 (id); CREATE INDEX test1_id_2_idx ON test1 (id_2); CREATE INDEX test1_value1_idx ON test1 (value1); CREATE INDEX test1_value2_idx ON test1 (value2); CREATE INDEX test2_id_idx ON test2 (id); CREATE INDEX test2_value_idx ON test2 (value); VACUUM ANALYZE;
рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХреНрд╡реЗрд░реА рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рджреЛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдорд╛рди рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреА рд╣реИред
SELECT * FROM test1 WHERE value1 BETWEEN 0.5 and 0.505 AND value2 BETWEEN 0.6 and 0.61;
рдЧреНрд▓рд╛рдЗрдбрд░ рдмрд┐рдЯрдореИрдк рд╕реНрдХреИрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХ рд╕реНрдХреИрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИред
QUERY PLAN
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕реВрдЪрдХрд╛рдВрдХ рд╕реНрдХреИрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
SELECT * FROM test1 WHERE value1 BETWEEN 0.5 and 0.505 AND value2 BETWEEN 0.6 and 0.61;
QUERY PLAN
рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
SELECT * FROM test1 WHERE value1 BETWEEN 0.5 and 0.505 AND value2 BETWEEN 0.6 and 0.61;
QUERY PLAN
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдорд┐рд▓рд╛рддреЗ рд╣реБрдП, рджреВрд╕рд░реЗ рдФрд░ LIMIT рдХреЗ рдХреНрд╖реЗрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдЫрдБрдЯрд╛рдИред
SELECT * FROM test1 t1 JOIN test2 t2 ON t1.id_2 = t2.id WHERE t2.value BETWEEN 0.5 AND 0.51 ORDER BY t1.value1 LIMIT 100;
рдЧреНрд▓рд╛рдЗрдбрд░ test1_value1_idx рдФрд░ рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рд╕реА рдпреЛрдЬрдирд╛ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред
QUERY PLAN
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреА рдЯреЗрдмрд▓ рдЬреЙрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рд╣реИрд╢рдУрдЗрдиред
EXPLAIN ANALYZE SELECT * FROM test1 t1 JOIN test2 t2 ON t1.id_2 = t2.id WHERE t2.value BETWEEN 0.5 AND 0.51 ORDER BY t1.value1 LIMIT 100;
рдЯреЗрд╕реНрдЯ 2 рджреНрд╡рд╛рд░рд╛ рдмрд┐рдЯрдореИрдк рдЗрдВрдбреЗрдХреНрд╕ рд╕реНрдХреИрди рдХреЗ рдЕрдВрджрд░ рдФрд░ рдмрд╛рд╣рд░ рдХреА рд╕реАрдорд╛ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдЧреНрд▓рд╛рдЗрдбрд░ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
QUERY PLAN
рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ MergeJoin рдФрд░ IndexScan рдХреЛ index test__value_idx рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЧреНрд▓рд╛рдЗрдбрд░ рдлрд┐рд░ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдЫрдВрдЯрд╛рдИ рдФрд░ рд╕реАрдорд╛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред
EXPLAIN ANALYZE SELECT * FROM test1 t1 JOIN test2 t2 ON t1.id_2 = t2.id WHERE t2.value BETWEEN 0.5 AND 0.51 ORDER BY t1.value1 LIMIT 100;
QUERY PLAN
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рджрд┐рдП рдЧрдП рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдХреЗрд╡рд▓ рд╕рдВрдХреЗрдд рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╕реНрдерд┐рддрд┐ рдЦрд░рд╛рдм рд╣реЛ рдЧрдИ рд╣реИред рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛, рдореИрдВ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рдВрдХреЗрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рджреЛ рдмрд╛рд░ рд╕реЛрдЪрдирд╛ рдЙрдЪрд┐рдд рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдпреЛрдЬрдирд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рддреЗрдЬ рд╣реИ, рддреЛ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ:
- рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЧреНрд▓рд╛рдЗрдбрд░ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ * _cost, effective_cache_size, geqo *, рдЖрджрд┐ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рдЙрдкрд▓рдмреНрдз рд╕рд░реНрд╡рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░?
- рдХрд┐рд╕ рдбреЗрдЯрд╛ рдкрд░ рдЖрдкрдХреЛ рдПрдХ рдпреЛрдЬрдирд╛ рдорд┐рд▓реА рдЬреЛ рддреЗрдЬреА рд╕реЗ рдЪрд▓рддреА рд╣реИ? рдХреНрдпрд╛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╕рдорд╛рди рдбреЗрдЯрд╛ рд╡рд┐рддрд░рдг рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдбреЗрдЯрд╛ рд╡рд┐рддрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдВрдХреЗрдд рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ?
- рдХреНрдпрд╛ рдпреЛрдЬрдирд╛ рддрдм рддреЗрдЬреА рд╕реЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рд╣реБрдИ рдЬрдм рдЖрдкрдХреА рдЬрд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬ рдХреИрд╢ рдореЗрдВ рдереА? рдФрд░ рдЙрддреНрдкрд╛рджрди рдкрд░ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдордп, рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рдХреИрд╢ рдореЗрдВ рднреА рд╣реЛрдЧрд╛?
рдлрд┐рд░ рднреА, рдХрдо рд╕реЗ рдХрдо рджреЛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдХреЗрдд рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ:
- рдореИрдВ рдЧреНрд▓рд╛рдЗрдбрд░ / рдирд┐рд╖реНрдХрд╛рд╕рди рдХреЗ рдХрд╛рдо рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, "рдпрджрд┐ рд╣реЛрдЧрд╛ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?" рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдкрд╛рдПрдВред
- рдХрднреА-рдХрднреА рдЧреНрд▓рд╛рдЗрдбрд░ рдЕрднреА рднреА рдмрд╣реБрдд рдЧрд▓рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдордЬрдмреВрдд рд╕рд╣рд╕рдВрдмрдВрдз рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд╣ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рд╣рд╛рд▓рдд рдХреА рдЪрдпрдирд╛рддреНрдордХрддрд╛ рдХрд╛ рдПрдХ рдЧрд▓рдд рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЦрд░рд╛рдм рдпреЛрдЬрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
PS рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЯрд┐рдк рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдУрд▓реЗрдЧ рдмрд╛рд░реНрдЯреБрдиреЛрд╡ (рдЙрд░реНрдл
рдЬрд╝реЗрди )!