рд╣реЗ рд╕рдЧрд│рдВ рдХрд╕рдВ рд╕реБрд░реВ рдЭрд╛рд▓рдВ рддреЗ рдЖрдард╡рддрдВрдп. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкреНрд░рдердордЪ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд╣реЛрддреЗ

рдЖрдореНрд╣рд╛рд▓рд╛ PostgreSQL рдХреНрд╡реЗрд░реА рдХрд╢реА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рд╛рдпрдЪреА рд╣реЛрддреА рдЖрдгрд┐ рдпрд╛рддреВрди рдХрд╛рдп рдмрд╛рд╣реЗрд░ рдЖрд▓реЗ рдпрд╛рдмрджреНрджрд▓.
рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ? рд╣реЛрдп, рдХрд╛рд░рдг рдорд╛рдЧреАрд▓ 4 рд╡рд░реНрд╖рд╛рдВрдкрд╛рд╕реВрди рд╕рд░реНрд╡рдХрд╛рд╣реА рд╢рд╛рдВрддрдкрдгреЗ, рд╢рд╛рдВрддрдкрдгреЗ, рдШрдбреНрдпрд╛рд│рд╛рдЪреНрдпрд╛ рдЯрд┐рдХрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рдХрд╛рдо рдХрд░рдд рд╣реЛрддреЗ.
рдПрдХ рдПрдкрд┐рдЧреНрд░рд╛рдл рдореНрд╣рдгреВрди.

рд╣реЗ рд╕рдЧрд│рдВ рдХрд╕рдВ рд╕реБрд░реВ рдЭрд╛рд▓рдВ рддреЗ рдЖрдард╡рддрдВрдп. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкреНрд░рдердордЪ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд╣реЛрддреЗ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдШрдЯрдирд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд.
рд╕рд░реНрд╡ рдирд╛рд╡реЗ рдмрджрд▓рд▓реА рдЖрд╣реЗрдд, рдпреЛрдЧрд╛рдпреЛрдЧ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрд╣реЗрдд.

рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрдг рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛, рддреЗрд╡реНрд╣рд╛ рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреЗ рдиреЗрд╣рдореАрдЪ рдордиреЛрд░рдВрдЬрдХ рдЕрд╕рддреЗ рдХреА рд╕реБрд░реБрд╡рд╛рддреАрдЪреА рдкреНрд░реЗрд░рдгрд╛ рдХрд╛рдп рд╣реЛрддреА, рд╣реЗ рд╕рд░реНрд╡ рдХреЛрдареВрди рд╕реБрд░реВ рдЭрд╛рд▓реЗ.

рддрд░, рдкрд░рд┐рдгрд╛рдореА рдХрд╛рдп рдШрдбрд▓реЗ рддреЗ рд▓реЗрдЦрд╛рдд рдереЛрдбрдХреНрдпрд╛рдд рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ тАЬPostgreSQL рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкрджреНрдзрддреАрдВрдкреИрдХреА рдПрдХ рдореНрд╣рдгреВрди рд╕рдВрд╢реНрд▓реЗрд╖рдг┬╗.

рдорд╛рдЧреАрд▓ рдХрд╛рд░реНрдпрдХреНрд░рдорд╛рдВрдЪреА рд╕рд╛рдЦрд│реА рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдХрджрд╛рдЪрд┐рдд рдордиреЛрд░рдВрдЬрдХ рдЕрд╕реЗрд▓.
рдЗрддрд┐рд╣рд╛рд╕рд╛рдиреЗ рдЕрдЪреВрдХ рдкреНрд░рд╛рд░рдВрдн рддрд╛рд░реАрдЦ рдЬрддрди рдХреЗрд▓реА - 2018-09-10 18:02:48.
рддрд╕реЗрдЪ, рдХрдереЗрдордзреНрдпреЗ рдПрдХ рд╡рд┐рдирдВрддреА рдЖрд╣реЗ рдЬрд┐рдереВрди рд╣реЗ рд╕рд░реНрд╡ рд╕реБрд░реВ рдЭрд╛рд▓реЗ:
рд╕рдорд╕реНрдпрд╛ рд╡рд┐рдирдВрддреАрдирд┐рд╡рдбрд╛
p. тАЬPARAMETER_IDтАЭ parameter_id рдореНрд╣рдгреВрди,
pd."PD_NAME" AS pd_name,
pd."CUSTOMER_PARTNUMBER" as customer_partnumber,
w. "LRM" AS LRM,
w. "LOTID" рдкреНрд░рдорд╛рдгреЗ рд▓реЛрдЯрд┐рдб,
w.тАЬRTD_VALUEтАЭ AS RTD_value,
w.тАЬLOWER_SPEC_LIMITтАЭ as low_spec_limit,
w.тАЬUPPER_SPEC_LIMITтАЭ as upper_spec_limit,
p."TYPE_CALCUL" AS type_calcul,
s."SPENT_NAME" AS spent_name,
s. тАЬSPENT_DATEтАЭ AS spent_date,
рдЕрд░реНрдХ ("SPENT_DATE" рдкрд╛рд╕реВрди рд╡рд░реНрд╖) AS рд╡рд░реНрд╖,
рдорд╣рд┐рдирд╛ рдореНрд╣рдгреВрди рдХрд╛рдврд╛("SPENT_DATE" рдкрд╛рд╕реВрди рдорд╣рд┐рдирд╛),
s."REPORT_NAME" AS report_name,
p."STPM_NAME" AS stpm_name,
p. тАЬCUSTOMERPARAM_NAMEтАЭ as customerparam_name
wdata w рдкрд╛рд╕реВрди,
рдЦрд░реНрдЪ рдХреЗрд▓рд╛,
pmtr p,
spent_pd sp,
pd pd
WHERE s.тАЬSPENT_IDтАЭ = w.тАЬSPENT_IDтАЭ
рдЖрдгрд┐ p."PARAMETER_ID" = w."PARAMETER_ID"
рдЖрдгрд┐ s.тАЬSPENT_IDтАЭ = sp.тАЬSPENT_IDтАЭ
рдЖрдгрд┐ pd."PD_ID" = sp."PD_ID"
рдЖрдгрд┐ s. тАЬSPENT_DATEтАЭ >= '2018-07-01' рдЖрдгрд┐ s. тАЬSPENT_DATEтАЭ <= '2018-09-30'
рдЖрдгрд┐ s.тАЬSPENT_DATEтАЭ = (MAX рдирд┐рд╡рдбрд╛(s2.тАЬSPENT_DATEтАЭ)
s2 рдЦрд░реНрдЪ рдХреЗрд▓реЗрд▓реЗ,
wdata w2
WHERE s2.тАЬSPENT_IDтАЭ = w2.тАЬSPENT_IDтАЭ
рдЖрдгрд┐ w2.тАЬLRMтАЭ = w.тАЬLRMтАЭ);


рд╕рдорд╕реНрдпреЗрдЪреЗ рд╡рд░реНрдгрди рдЕрдВрджрд╛рдЬреЗ рдорд╛рдирдХ рдЖрд╣реЗ - тАЬрд╕рд░реНрд╡ рдХрд╛рд╣реА рд╡рд╛рдИрдЯ рдЖрд╣реЗ. рдХрд╛рдп рдкреНрд░реЙрдмреНрд▓реЗрдо рдЖрд╣реЗ рддреЗ рд╕рд╛рдВрдЧ."
рдорд▓рд╛ рд▓рдЧреЗрдЪ рд╕рд╛рдбреЗрддреАрди рдЗрдВрдЪрд╛рдЪреНрдпрд╛ рдбреНрд░рд╛рдИрд╡реНрд╣рдЪреНрдпрд╛ рдХрд╛рд│рд╛рддреАрд▓ рдПрдХ рдХрд┐рд╕реНрд╕рд╛ рдЖрдард╡рд▓рд╛:

рд▓рдВрдЧрдбрд╛ рд╣реЕрдХрд░рдХрдбреЗ рдпреЗрддреЛ.
- рдорд╛рдЭреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд╣реАрд╣реА рдХрд╛рдо рдХрд░рдд рдирд╛рд╣реА, рдорд▓рд╛ рд╕рд╛рдВрдЧрд╛ рд╕рдорд╕реНрдпрд╛ рдХреБрдареЗ рдЖрд╣реЗ.
- рдбреАрдПрдирдП рдордзреНрдпреЗ...

рдкрд░рдВрддреБ рдЕрд░реНрдерд╛рддрдЪ, рдХрд╛рдордЧрд┐рд░реАрдЪреНрдпрд╛ рдШрдЯрдирд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╣рд╛ рдорд╛рд░реНрдЧ рдирд╛рд╣реА. "рддреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рдордЬреВ рд╢рдХрдд рдирд╛рд╣реАрдд" (рд╕рд╣). рдЖрдкрдг рддреЗ рдмрд╛рд╣реЗрд░ рдХрд╛рдврдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рдмрд░рдВ, рдЦрдгреВрди рдХрд╛рдвреВрдпрд╛. рдХрджрд╛рдЪрд┐рдд рдкрд░рд┐рдгрд╛рдореА рдХрд╛рд╣реАрддрд░реА рдЬрдорд╛ рд╣реЛрдИрд▓.

рд╣реЗ рд╕рдЧрд│рдВ рдХрд╕рдВ рд╕реБрд░реВ рдЭрд╛рд▓рдВ рддреЗ рдЖрдард╡рддрдВрдп. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкреНрд░рдердордЪ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд╣реЛрддреЗ

рдЪреМрдХрд╢реА рд╕реБрд░реВ рдЭрд╛рд▓реА

рддрд░, рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╛рдЪрд╛ рдЕрд╡рд▓рдВрдм рди рдХрд░рддрд╛ рдЙрдШрдбреНрдпрд╛ рдбреЛрд│реНрдпрд╛рдВрдиреА рдХрд╛рдп рддрд╛рдмрдбрддреЛрдм рдкрд╛рд╣рд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.
1) JOIN рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдд рдирд╛рд╣реАрдд. рд╣реЗ рд╡рд╛рдИрдЯ рдЖрд╣реЗ, рд╡рд┐рд╢реЗрд╖рддрдГ рдЬрд░ рдХрдиреЗрдХреНрд╢рдирдЪреА рд╕рдВрдЦреНрдпрд╛ рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЕрд╕реЗрд▓.
реи) рдкрдг рддреНрдпрд╛рд╣реВрдирд╣реА рд╡рд╛рдИрдЯ рдореНрд╣рдгрдЬреЗ рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рд╕рдмрдХреНрд╡реЗрд░реА, рд╢рд┐рд╡рд╛рдп, рдПрдХрддреНрд░реАрдХрд░рдгрд╛рд╕рд╣. рд╣реЗ рдЦреВрдк рд╡рд╛рдИрдЯ рдЖрд╣реЗ.
рд╣реЗ рдЕрд░реНрдерд╛рддрдЪ рд╡рд╛рдИрдЯ рдЖрд╣реЗ. рдкрдг рд╣реЗ рдлрдХреНрдд рдПрдХреАрдХрдбреЗ рдЖрд╣реЗ. рджреБрд╕рд░реАрдХрдбреЗ, рд╣реЗ рдЦреВрдк рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ, рдХрд╛рд░рдг рд╕рдорд╕реНрдпреЗрдЪреЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╕рдорд╛рдзрд╛рди рдЖрдгрд┐ рд╡рд┐рдирдВрддреА рдЖрд╣реЗ рдЬреА рд╕реБрдзрд╛рд░рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ.
рднрд╡рд┐рд╖реНрдп рд╕рд╛рдВрдЧрдгрд╛рд▒реНрдпрд╛ (рд╕реА) рдХрдбреЗ рдЬрд╛рдК рдирдХрд╛.
рдХреНрд╡реЗрд░реА рдпреЛрдЬрдирд╛ рдЗрддрдХреА рдХреНрд▓рд┐рд╖реНрдЯ рдирд╛рд╣реА, рдкрд░рдВрддреБ рддреА рдЦреВрдкрдЪ рд╕реВрдЪрдХ рдЖрд╣реЗ:
рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдпреЛрдЬрдирд╛рд╣реЗ рд╕рдЧрд│рдВ рдХрд╕рдВ рд╕реБрд░реВ рдЭрд╛рд▓рдВ рддреЗ рдЖрдард╡рддрдВрдп. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкреНрд░рдердордЪ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд╣реЛрддреЗ

рд╕рд░реНрд╡рд╛рдд рдордиреЛрд░рдВрдЬрдХ рдЖрдгрд┐ рдЙрдкрдпреБрдХреНрдд, рдиреЗрд╣рдореАрдкреНрд░рдорд╛рдгреЗ, рд╕реБрд░реВрд╡рд╛рддреАрд╕ рдЖрдгрд┐ рд╢реЗрд╡рдЯреА рдЖрд╣реЗ.
рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк (рдХрд┐рдВрдордд=935.84..479763226.18 рдкрдВрдХреНрддреА=3322 рд░реБрдВрджреА=135) (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реЗрд│=31.536..8220420.295 рдкрдВрдХреНрддреА=8111656 рд▓реВрдк=1)
рдирд┐рдпреЛрдЬрди рд╡реЗрд│: 3.807 ms
рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреА рд╡реЗрд│: 8222351.640 ms
рдкреВрд░реНрдг рд╣реЛрдгреНрдпрд╛рдЪреА рд╡реЗрд│ 2 рддрд╛рд╕рд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЖрд╣реЗ.

рд╣реЗ рд╕рдЧрд│рдВ рдХрд╕рдВ рд╕реБрд░реВ рдЭрд╛рд▓рдВ рддреЗ рдЖрдард╡рддрдВрдп. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкреНрд░рдердордЪ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд╣реЛрддреЗ

рдЦреЛрдЯреНрдпрд╛ рдЧреГрд╣рд┐рддрдХрд╛рдВрдирд╛ рд╡реЗрд│ рд▓рд╛рдЧрд▓рд╛

рдЧреГрд╣реАрддрдХ 1 - рдСрдкреНрдЯрд┐рдорд╛рдпрдЭрд░ рдЪреВрдХ рдХрд░рддреЛ рдЖрдгрд┐ рдЪреБрдХреАрдЪреА рдпреЛрдЬрдирд╛ рддрдпрд╛рд░ рдХрд░рддреЛ.

рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдпреЛрдЬрдиреЗрдЪреА рдХрд▓реНрдкрдирд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рд╕рд╛рдЗрдЯ рд╡рд╛рдкрд░реВ https://explain.depesz.com/. рддрдерд╛рдкрд┐, рд╕рд╛рдЗрдЯрдиреЗ рдордиреЛрд░рдВрдЬрдХ рдХрд┐рдВрд╡рд╛ рдЙрдкрдпреБрдХреНрдд рдХрд╛рд╣реАрд╣реА рджрд░реНрд╢рд╡рд▓реЗ рдирд╛рд╣реА. рдкрд╣рд┐рд▓реНрдпрд╛ рдЖрдгрд┐ рджреБрд╕рд▒реНрдпрд╛ рджреГрд╖реНрдЯреАрдХреНрд╖реЗрдкрд╛рдд, рдЦрд░реЛрдЦрд░ рдорджрдд рдХрд░реВ рд╢рдХреЗрд▓ рдЕрд╕реЗ рдХрд╛рд╣реАрд╣реА рдирд╛рд╣реА. рд╣реЗ рд╢рдХреНрдп рдЖрд╣реЗ рдХреА рдкреВрд░реНрдг рд╕реНрдХреЕрди рдХрд┐рдорд╛рди рдЖрд╣реЗ. рдкреБрдвреЗ рдЬрд╛.

рд╣рд╛рдпрдкреЛрдереЗрд╕рд┐рд╕ 2-рдСрдЯреЛрд╡реНрд╣реЕрдХреНрдпреВрдо рдмрд╛рдЬреВрдЪреНрдпрд╛ рдмреЗрд╕рд╡рд░ рдкреНрд░рднрд╛рд╡, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдмреНрд░реЗрдХрдкрд╛рд╕реВрди рдореБрдХреНрдд рд╣реЛрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдкрд░рдВрддреБ рдСрдЯреЛрд╡реНрд╣реЕрдХреНрдпреВрдо рдбрд┐рдорди рдЪрд╛рдВрдЧрд▓реЗ рд╡рд╛рдЧрддрд╛рдд, рд▓рд╛рдВрдм-рд▓рдЯрдХрдгрд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╛рд╣реАрдд. рдЧрдВрднреАрд░ рднрд╛рд░ рдирд╛рд╣реА. рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрдгрдЦреА рдХрд╛рд╣реАрддрд░реА рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдЖрд╣реЗ.

рдЧреГрд╣реАрддрдХ 3 - рдЖрдХрдбреЗрд╡рд╛рд░реА рдЬреБрдиреА рдЖрд╣реЗ, рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯреАрдЪреА рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ

рдкреБрдиреНрд╣рд╛, рддреЗ рдирд╛рд╣реА. рдЖрдХрдбреЗрд╡рд╛рд░реА рдЕрджреНрдпрдпрд╛рд╡рдд рдЖрд╣реЗ. рдЬреЗ, рдСрдЯреЛрд╡реНрд╣реЕрдХреНрдпреВрдордордзреНрдпреЗ рд╕рдорд╕реНрдпрд╛ рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ, рдЖрд╢реНрдЪрд░реНрдпрдХрд╛рд░рдХ рдирд╛рд╣реА.

рдЪрд▓рд╛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреЗ рд╕реБрд░реВ рдХрд░реВрдпрд╛

рдореБрдЦреНрдп рд╕рд╛рд░рдгреА 'wdata' рдирдХреНрдХреАрдЪ рд▓рд╣рд╛рди рдирд╛рд╣реА, рдЬрд╡рд│рдЬрд╡рд│ 3 рджрд╢рд▓рдХреНрд╖ рд░реЗрдХреЙрд░реНрдб рдЖрд╣реЗрдд.
рдЖрдгрд┐ рд╣реЗ рдЯреЗрдмрд▓ рдкреВрд░реНрдг рд╕реНрдХреЕрдирдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ.

рд╣реЕрд╢ рдХреЙрдиреНрдб: ((w."SPENT_ID" = s."SPENT_ID") рдЖрдгрд┐ ((рдЙрдкрдпреЛрдЬрдирд╛ 1) = s."SPENT_DATE"))
-> Seq рд╕реНрдХреЕрди wdata w рд╡рд░ (cost=0.00..574151.49 рдкрдВрдХреНрддреА=26886249 рд░реБрдВрджреА=46) (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реЗрд│=0.005..8153.565 рдкрдВрдХреНрддреА=26873950 loops=1)
рдЖрдореНрд╣реА рдорд╛рдирдХ рдЧреЛрд╖реНрдЯ рдХрд░рддреЛ: "рдЪрд▓рд╛, рдПрдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдмрдирд╡реВ рдЖрдгрд┐ рд╕рд░реНрд╡рдХрд╛рд╣реА рдЙрдбреЗрд▓."
тАЬSPENT_IDтАЭ рдлреАрд▓реНрдбрд╡рд░ рдПрдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рддрдпрд╛рд░ рдХреЗрд▓реА
рдкрд░рд┐рдгрд╛рдореА:
рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╡рд╛рдкрд░реВрди рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдпреЛрдЬрдирд╛ рдХреНрд╡реЗрд░реА рдХрд░рд╛рд╣реЗ рд╕рдЧрд│рдВ рдХрд╕рдВ рд╕реБрд░реВ рдЭрд╛рд▓рдВ рддреЗ рдЖрдард╡рддрдВрдп. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкреНрд░рдердордЪ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд╣реЛрддреЗ

рдмрд░рдВ, рдорджрдд рдХреЗрд▓реА рдХрд╛?
рд╣реЛрддреЗ: 8 222 351.640ms (2 рддрд╛рд╕рд╛рдВрдкреЗрдХреНрд╖рд╛ рдереЛрдбреЗ рдЬрд╛рд╕реНрдд)
рдЭрд╛рд▓реЗ: 6 985 431.575 ms (рдЬрд╡рд│рдЬрд╡рд│ 2 рддрд╛рд╕)
рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рд╕рдорд╛рди рд╕рдлрд░рдЪрдВрдж, рдмрд╛рдЬреВрдЪреЗ рджреГрд╢реНрдп.
рдЪрд▓рд╛ рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡реВрдпрд╛:
тАЬрддреБрдордЪреНрдпрд╛рдХрдбреЗ рддреЗрдЪ рдЖрд╣реЗ, рдкрдг рдкрдВрдЦ рдирд╕рд▓реЗрд▓реЗ? рд╢реЛрдзреЗрд▓".

рд╣реЗ рд╕рдЧрд│рдВ рдХрд╕рдВ рд╕реБрд░реВ рдЭрд╛рд▓рдВ рддреЗ рдЖрдард╡рддрдВрдп. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкреНрд░рдердордЪ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд╣реЛрддреЗ

рддрддреНрд╡рддрдГ, рдпрд╛рд▓рд╛ рдПрдХ рдЪрд╛рдВрдЧрд▓рд╛ рдкрд░рд┐рдгрд╛рдо рдореНрд╣рдЯрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдЪрд╛рдВрдЧрд▓реЗ, рдЪрд╛рдВрдЧрд▓реЗ рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╕реНрд╡реАрдХрд╛рд░реНрдп. рдХрдореАрддрдХрдореА, рдХрд┐рддреА рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрдгрд┐ рдХрд╛рдп рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рддреЗ рдЪрд╛рдВрдЧрд▓реЗ рдХрд╛ рд╣реЛрддреЗ рдпрд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгрд╛рд░рд╛ рдПрдХ рдореЛрдард╛ рдЕрд╣рд╡рд╛рд▓ рдЧреНрд░рд╛рд╣рдХрд╛рдВрдирд╛ рджреНрдпрд╛.
рдорд╛рддреНрд░, рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рдЕрджреНрдпрд╛рдк рджреВрд░ рдЖрд╣реЗ. рдЦреВрдк рджреВрд░.

рдЖрдгрд┐ рдЖрддрд╛ рд╕рд░реНрд╡рд╛рдд рдордиреЛрд░рдВрдЬрдХ рдЧреЛрд╖реНрдЯ - рдЖрдореНрд╣реА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡рддреЛ, рдЖрдореНрд╣реА рд╡рд┐рдирдВрддреА рдкреЙрд▓рд┐рд╢ рдХрд░реВ

рдкрд╣рд┐рд▓реА рдкрд╛рдпрд░реА - рдЬреЙрдЗрди рд╡рд╛рдкрд░рд╛

рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣рд┐рд▓реЗрд▓реА рд╡рд┐рдирдВрддреА рдЖрддрд╛ рдпрд╛рд╕рд╛рд░рдЦреА рджрд┐рд╕рддреЗ (рдХрд┐рдорд╛рди рдЕрдзрд┐рдХ рд╕реБрдВрджрд░):
JOIN рд╡рд╛рдкрд░реВрди рдХреНрд╡реЗрд░реА рдХрд░рд╛рдирд┐рд╡рдбрд╛
p. тАЬPARAMETER_IDтАЭ parameter_id рдореНрд╣рдгреВрди,
pd."PD_NAME" AS pd_name,
pd."CUSTOMER_PARTNUMBER" as customer_partnumber,
w. "LRM" AS LRM,
w. "LOTID" рдкреНрд░рдорд╛рдгреЗ рд▓реЛрдЯрд┐рдб,
w.тАЬRTD_VALUEтАЭ AS RTD_value,
w.тАЬLOWER_SPEC_LIMITтАЭ as low_spec_limit,
w.тАЬUPPER_SPEC_LIMITтАЭ as upper_spec_limit,
p."TYPE_CALCUL" AS type_calcul,
s."SPENT_NAME" AS spent_name,
s. тАЬSPENT_DATEтАЭ AS spent_date,
рдЕрд░реНрдХ ("SPENT_DATE" рдкрд╛рд╕реВрди рд╡рд░реНрд╖) AS рд╡рд░реНрд╖,
рдорд╣рд┐рдирд╛ рдореНрд╣рдгреВрди рдХрд╛рдврд╛("SPENT_DATE" рдкрд╛рд╕реВрди рдорд╣рд┐рдирд╛),
s."REPORT_NAME" AS report_name,
p."STPM_NAME" AS stpm_name,
p. тАЬCUSTOMERPARAM_NAMEтАЭ as customerparam_name
"SPENT_ID"=s.""SPENT_ID" рд╡рд░ рдЖрддреАрд▓ рд╕рд╛рдореАрд▓ рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рдЦрд░реНрдЪ рдХреЗрд▓реЗрд▓реНрдпрд╛ wdata рд╡рд░реВрди
рдЖрддреАрд▓ рд╕рд╛рдореАрд▓ рд╡реНрд╣рд╛ pmtr p ON p. тАЬPARAMETER_IDтАЭ = w. тАЬPARAMETER_IDтАЭ
INNER Join spent_pd sp ON s. тАЬSPENT_IDтАЭ = sp. тАЬSPENT_IDтАЭ
рдЖрддреАрд▓ рд╕рд╣рднрд╛рдЧреА pd pd рдСрди pd. тАЬPD_IDтАЭ = sp. тАЬPD_IDтАЭ
WHERE
s. тАЬSPENT_DATEтАЭ >= '2018-07-01' рдЖрдгрд┐ s. тАЬSPENT_DATEтАЭ <= '2018-09-30'рдЖрдгрд┐
s.тАЬSPENT_DATEтАЭ = (MAX рдирд┐рд╡рдбрд╛(s2.тАЬSPENT_DATEтАЭ)
w2 рд╡рд░ w2 рдЕрдВрддрд░реНрдЧрдд рд╕рд╛рдореАрд▓ рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА s2 рдЦрд░реНрдЪ рдХреЗрд▓рд╛ wdata рд╡рд░реВрди.тАЬSPENT_IDтАЭ=s2.тАЬSPENT_IDтАЭ
рдЗрдирд░ рдЬреЙрдЗрди wdata w
рдСрди w2.тАЬLRMтАЭ = w.тАЬLRMтАЭ);
рдирд┐рдпреЛрдЬрди рд╡реЗрд│: 2.486 ms
рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреА рд╡реЗрд│: 1223680.326 ms

рддрд░, рдкрд╣рд┐рд▓рд╛ рдирд┐рдХрд╛рд▓.
рд╣реЛрддреЗ: 6 ms (рдЬрд╡рд│рдЬрд╡рд│ 985 рддрд╛рд╕).
рдЭрд╛рд▓реЗ: 1 223 680.326 ms (рдлрдХреНрдд 20 рдорд┐рдирд┐рдЯрд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд).
рдЪрд╛рдВрдЧрд▓рд╛ рдкрд░рд┐рдгрд╛рдо. рддрддреНрд╡рддрдГ, рдкреБрдиреНрд╣рд╛, рдЖрдореНрд╣реА рддреЗрдереЗ рдерд╛рдВрдмреВ рд╢рдХрддреЛ. рдкрд░рдВрддреБ рд╣реЗ рдЗрддрдХреЗ рд░рд╕рд╣реАрди рдЖрд╣реЗ, рдЖрдкрдг рдерд╛рдВрдмрд╡реВ рд╢рдХрдд рдирд╛рд╣реА.
рдЪреНрдпрд╛ рд╕рд╛рдареА

рд╣реЗ рд╕рдЧрд│рдВ рдХрд╕рдВ рд╕реБрд░реВ рдЭрд╛рд▓рдВ рддреЗ рдЖрдард╡рддрдВрдп. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкреНрд░рдердордЪ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд╣реЛрддреЗ

рдкрд╛рдпрд░реА рджреЛрди - рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рд╕рдмрдХреНрд╡реЗрд░реАрдкрд╛рд╕реВрди рдореБрдХреНрдд рд╡реНрд╣рд╛

рд╡рд┐рдирдВрддреА рдордЬрдХреВрд░ рдмрджрд▓рд▓рд╛:
рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рд╕рдмрдХреНрд╡реЗрд░реАрд╢рд┐рд╡рд╛рдпрдирд┐рд╡рдбрд╛
p. тАЬPARAMETER_IDтАЭ parameter_id рдореНрд╣рдгреВрди,
pd."PD_NAME" AS pd_name,
pd."CUSTOMER_PARTNUMBER" as customer_partnumber,
w. "LRM" AS LRM,
w. "LOTID" рдкреНрд░рдорд╛рдгреЗ рд▓реЛрдЯрд┐рдб,
w.тАЬRTD_VALUEтАЭ AS RTD_value,
w.тАЬLOWER_SPEC_LIMITтАЭ as low_spec_limit,
w.тАЬUPPER_SPEC_LIMITтАЭ as upper_spec_limit,
p."TYPE_CALCUL" AS type_calcul,
s."SPENT_NAME" AS spent_name,
s. тАЬSPENT_DATEтАЭ AS spent_date,
рдЕрд░реНрдХ ("SPENT_DATE" рдкрд╛рд╕реВрди рд╡рд░реНрд╖) AS рд╡рд░реНрд╖,
рдорд╣рд┐рдирд╛ рдореНрд╣рдгреВрди рдХрд╛рдврд╛("SPENT_DATE" рдкрд╛рд╕реВрди рдорд╣рд┐рдирд╛),
s."REPORT_NAME" AS report_name,
p."STPM_NAME" AS stpm_name,
p. тАЬCUSTOMERPARAM_NAMEтАЭ as customerparam_name
wdata рд╡рд░реВрди INNER Join рд╡рд░ s рдЦрд░реНрдЪ рдХреЗрд▓рд╛.тАЬSPENT_IDтАЭ = w.тАЬSPENT_IDтАЭ
рдЖрддреАрд▓ рд╕рд╛рдореАрд▓ рд╡реНрд╣рд╛ pmtr p ON p. тАЬPARAMETER_IDтАЭ = w. тАЬPARAMETER_IDтАЭ
INNER Join spent_pd sp ON s. тАЬSPENT_IDтАЭ = sp. тАЬSPENT_IDтАЭ
рдЖрддреАрд▓ рд╕рд╣рднрд╛рдЧреА pd pd рдСрди pd. тАЬPD_IDтАЭ = sp. тАЬPD_IDтАЭ
рдЕрдВрддрд░реНрдЧрдд рд╕рд╛рдореАрд▓ рд╡реНрд╣рд╛ (w2 рдирд┐рд╡рдбрд╛.тАЬLRMтАЭ, MAX(s2.тАЬSPENT_DATEтАЭ)
рдЦрд░реНрдЪ рдХреЗрд▓реЗрд▓реНрдпрд╛ s2 рдкрд╛рд╕реВрди INNER рдЬреЙрдЗрди wdata w2 ON s2.тАЬSPENT_IDтАЭ = w2.тАЬSPENT_IDтАЭ
w2 рджреНрд╡рд╛рд░реЗ рдЧрдЯ.тАЬLRMтАЭ
) md on w.тАЬLRMтАЭ = md.тАЬLRMтАЭ
WHERE
s."SPENT_DATE" >= '2018-07-01' рдЖрдгрд┐ s."SPENT_DATE" <= '2018-09-30';
рдирд┐рдпреЛрдЬрди рд╡реЗрд│: 2.291 ms
рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреА рд╡реЗрд│: 165021.870 ms

рд╣реЛрддреЗ: 1 223 680.326 ms (рдлрдХреНрдд 20 рдорд┐рдирд┐рдЯрд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд).
рдЭрд╛рд▓реЗ: 165 021.870 ms (рдлрдХреНрдд 2 рдорд┐рдирд┐рдЯрд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд).
рд╣реЗ рдЖрдзреАрдЪ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ.
рддрдерд╛рдкрд┐, рдмреНрд░рд┐рдЯрд┐рд╢ рдореНрд╣рдгрддрд╛рдд рддреНрдпрд╛рдкреНрд░рдорд╛рдгреЗ "рдкрдг, рдиреЗрд╣рдореА рдПрдХ рдкрдг рдЖрд╣реЗ" рдЬреЛ рдкрд░рд┐рдгрд╛рдо рдЦреВрдк рдЪрд╛рдВрдЧрд▓рд╛ рдЖрд╣реЗ рддреЛ рдЖрдкреЛрдЖрдк рд╕рдВрд╢рдп рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЛ. рдпреЗрдереЗ рдХрд╛рд╣реАрддрд░реА рдЪреВрдХ рдЖрд╣реЗ.

рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рд╕рдмрдХреНрд╡реЗрд░реАрдкрд╛рд╕реВрди рдореБрдХреНрдд рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рдХреНрд╡реЗрд░реА рджреБрд░реБрд╕реНрдд рдХрд░рдгреНрдпрд╛рдмрджреНрджрд▓рдЪреЗ рдЧреГрд╣рд┐рддрдХ рдпреЛрдЧреНрдп рдЖрд╣реЗ. рдкрд░рдВрддреБ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдпреЛрдЧреНрдп рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдд рдереЛрдбрд╛рд╕рд╛ рдмрджрд▓ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓.
рдкрд░рд┐рдгрд╛рдореА, рдкреНрд░рдердо рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдо:
рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рд╕рдмрдХреНрд╡реЗрд░реАрд╢рд┐рд╡рд╛рдп рд╕рдВрдкрд╛рджрд┐рдд рдХреНрд╡реЗрд░реАрдирд┐рд╡рдбрд╛
p. тАЬPARAMETER_IDтАЭ parameter_id рдореНрд╣рдгреВрди,
pd."PD_NAME" AS pd_name,
pd."CUSTOMER_PARTNUMBER" as customer_partnumber,
w. "LRM" AS LRM,
w. "LOTID" рдкреНрд░рдорд╛рдгреЗ рд▓реЛрдЯрд┐рдб,
w.тАЬRTD_VALUEтАЭ AS RTD_value,
w.тАЬLOWER_SPEC_LIMITтАЭ as low_spec_limit,
w.тАЬUPPER_SPEC_LIMITтАЭ as upper_spec_limit,
p."TYPE_CALCUL" AS type_calcul,
s."SPENT_NAME" AS spent_name,
s. тАЬSPENT_DATEтАЭ AS spent_date,
рдЕрд░реНрдХ (s. тАЬSPENT_DATEтАЭ рдкрд╛рд╕реВрди рд╡рд░реНрд╖) AS рд╡рд░реНрд╖,
рдХрд╛рдврд╛(s. тАЬSPENT_DATEтАЭ рдкрд╛рд╕реВрди рдорд╣рд┐рдирд╛) рдорд╣рд┐рдирд╛ рдореНрд╣рдгреВрди,
s."REPORT_NAME" AS report_name,
p."STPM_NAME" AS stpm_name,
p. тАЬCUSTOMERPARAM_NAMEтАЭ as customerparam_name
wdata рд╡рд░реВрди INNER Join рд╡рд░ s рдЦрд░реНрдЪ рдХреЗрд▓рд╛.тАЬSPENT_IDтАЭ = w.тАЬSPENT_IDтАЭ
рдЖрддреАрд▓ рд╕рд╛рдореАрд▓ рд╡реНрд╣рд╛ pmtr p ON p. тАЬPARAMETER_IDтАЭ = w. тАЬPARAMETER_IDтАЭ
INNER Join spent_pd sp ON s. тАЬSPENT_IDтАЭ = sp. тАЬSPENT_IDтАЭ
рдЖрддреАрд▓ рд╕рд╣рднрд╛рдЧреА pd pd рдСрди pd. тАЬPD_IDтАЭ = sp. тАЬPD_IDтАЭ
рдЖрддреАрд▓ рд╕рд╛рдореАрд▓ рд╡реНрд╣рд╛ (w2 рдирд┐рд╡рдбрд╛.тАЬLRMтАЭ, MAX(s2.тАЬSPENT_DATEтАЭ) тАЬSPENT_DATEтАЭ рдореНрд╣рдгреВрди
рдЦрд░реНрдЪ рдХреЗрд▓реЗрд▓реНрдпрд╛ s2 рдкрд╛рд╕реВрди INNER рдЬреЙрдЗрди wdata w2 ON s2.тАЬSPENT_IDтАЭ = w2.тАЬSPENT_IDтАЭ
w2 рджреНрд╡рд╛рд░реЗ рдЧрдЯ.тАЬLRMтАЭ
) md ON md. тАЬSPENT_DATEтАЭ = s. тАЬSPENT_DATEтАЭ рдЖрдгрд┐ md. тАЬLRMтАЭ = w. тАЬLRMтАЭ
WHERE
s."SPENT_DATE" >= '2018-07-01' рдЖрдгрд┐ s."SPENT_DATE" <= '2018-09-30';
рдирд┐рдпреЛрдЬрди рд╡реЗрд│: 3.192 ms
рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреА рд╡реЗрд│: 208014.134 ms

рддрд░, рдЖрдореНрд╣реА рдЬреНрдпрд╛рдЪрд╛ рд╢реЗрд╡рдЯ рдХрд░рддреЛ рддреЛ рдкрд╣рд┐рд▓рд╛ рд╕реНрд╡реАрдХрд╛рд░рд╛рд░реНрд╣ рдкрд░рд┐рдгрд╛рдо рдЖрд╣реЗ, рдЬреЛ рдЧреНрд░рд╛рд╣рдХрд╛рд▓рд╛ рджрд╛рдЦрд╡рдгреНрдпрд╛рд╕ рд▓рд╛рдЬ рд╡рд╛рдЯрдд рдирд╛рд╣реА:
рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА: 8 222 351.640 ms (2 рддрд╛рд╕рд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд)
рдЖрдореНрд╣реА рд╕рд╛рдзреНрдп рдХрд░рдгреНрдпрд╛рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ: 1 ms (223 рдорд┐рдирд┐рдЯрд╛рдВрдкреЗрдХреНрд╖рд╛ рдереЛрдбреЗ рдЬрд╛рд╕реНрдд).
рдирд┐рдХрд╛рд▓ (рдЕрдВрддрд░рд┐рдо): 208 014.134 ms (рдлрдХреНрдд 3 рдорд┐рдирд┐рдЯрд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд).

рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо.

рд╣реЗ рд╕рдЧрд│рдВ рдХрд╕рдВ рд╕реБрд░реВ рдЭрд╛рд▓рдВ рддреЗ рдЖрдард╡рддрдВрдп. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкреНрд░рдердордЪ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд╣реЛрддреЗ

рдкрд░рд┐рдгрд╛рдо

рдЖрдореНрд╣реА рддрд┐рдереЗ рдерд╛рдВрдмреВ рд╢рдХрд▓реЛ рдЕрд╕рддреЛ.
рдкрд░рдВрддреБтАж
рдЦрд╛рдгреНрдпрд╛рдиреЗ рднреВрдХ рд▓рд╛рдЧрддреЗ. рдЬреЛ рдЪрд╛рд▓рддреЛ рддреЛ рд░рд╕реНрддрд╛ рдкрд╛рд░ рдкрд╛рдбрддреЛ. рдХреЛрдгрддрд╛рд╣реА рдкрд░рд┐рдгрд╛рдо рдордзреНрдпрд╡рд░реНрддреА рдЖрд╣реЗ. рдерд╛рдВрдмрд▓рд╛ рдЖрдгрд┐ рдореЗрд▓рд╛. рдЗ.
рдЪрд▓рд╛ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╕реБрд░реВ рдареЗрд╡реВрдпрд╛.
рдЙрддреНрддрдо рдХрд▓реНрдкрдирд╛. рд╡рд┐рд╢реЗрд╖рдд: рдЧреНрд░рд╛рд╣рдХрд╛рдЪреАрд╣реА рд╣рд░рдХрдд рдирд╛рд╣реА рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдКрди. рдЖрдгрд┐ рддреНрдпрд╛рд╕рд╛рдареА рдЬреЛрд░рджрд╛рд░.

рддрд░, рдбреЗрдЯрд╛рдмреЗрд╕ рд░реАрдбрд┐рдЭрд╛рдЗрди рдХрд░рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ. рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╕реНрд╡рддрдГрдЪ рдпрд╛рдкреБрдвреЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реА (рдЬрд░реА, рд╣реЗ рдирдВрддрд░ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА, рд╕рд░реНрд╡рдХрд╛рд╣реА рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдЕрдкрдпрд╢реА рдард░рддреЗ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗ). рдкрд░рдВрддреБ рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЭрд╛рдЗрди рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреЗ рдЖрдгрд┐ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреЗ рд╣реА рдЖрдзреАрдкрд╛рд╕реВрдирдЪ рдПрдХ рдЕрддрд┐рд╢рдп рдЖрд╢рд╛рджрд╛рдпрдХ рдХрд▓реНрдкрдирд╛ рдЖрд╣реЗ. рдЖрдгрд┐ рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрд╡рд╛рдЪреЗ рдореНрд╣рдгрдЬреЗ рдордиреЛрд░рдВрдЬрдХ. рдкреБрдиреНрд╣рд╛, рдЖрдкрд▓реЗ рддрд╛рд░реБрдгреНрдп рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛. рдореА рд▓рдЧреЗрдЪ рдбреАрдмреАрдП рдЭрд╛рд▓реЛ рдирд╛рд╣реА, рдореА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ (рдмреЗрд╕рд┐рдХ, рдЕрд╕реЗрдВрдмрд▓рд░, рд╕реА, рдбрдмрд▓-рдкреНрд▓рд╕ рд╕реА, рдУрд░реЕрдХрд▓, plsql) рдореНрд╣рдгреВрди рдореЛрдард╛ рдЭрд╛рд▓реЛ. рдПрдХ рдордиреЛрд░рдВрдЬрдХ рд╡рд┐рд╖рдп, рдЕрд░реНрдерд╛рддрдЪ, рд╡реЗрдЧрд│реНрдпрд╛ рд╕рдВрд╕реНрдорд░рдгрд╛рд╕рд╛рдареА ;-).
рддрдерд╛рдкрд┐, рдЖрдкрдг рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛрдК рдирдХрд╛.

рддреНрдпрд╛рдореБрд│реЗ

рд╣реЗ рд╕рдЧрд│рдВ рдХрд╕рдВ рд╕реБрд░реВ рдЭрд╛рд▓рдВ рддреЗ рдЖрдард╡рддрдВрдп. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкреНрд░рдердордЪ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд╣реЛрддреЗ

рдХрд┐рдВрд╡рд╛ рдХрджрд╛рдЪрд┐рдд рд╡рд┐рднрд╛рдЬрди рдЖрдореНрд╣рд╛рд▓рд╛ рдорджрдд рдХрд░реЗрд▓?
рд╕реНрдкреЙрдпрд▓рд░ - "рд╣реЛрдп, рд╣реЗ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рд╕ рдорджрдд рдХрд░рддреЗ."

рдкрдг рддреА рдкреВрд░реНрдгрдкрдгреЗ рд╡реЗрдЧрд│реА рдХрдерд╛ рдЖрд╣реЗ...

рдкреБрдвреЗ рдЪрд╛рд▓реВтАж

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛