рддрдкрд╛рдИрд▓рд╛рдИ рдпрд╛рдж рдЫ рдпреЛ рд╕рдмреИ рдХрд╕рд░реА рд╕реБрд░реБ рднрдпреЛред рд╕рдмреИ рдХреБрд░рд╛ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рд░ рдмрд╛рд░рдореНрдмрд╛рд░ рдерд┐рдпреЛ

рд╣рд╛рдореАрд▓реЗ рдХрд╕рд░реА 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 рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рджреИрдиред рдпреЛ рдЦрд░рд╛рдм рдЫ, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдпрджрд┐ рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдПрдХ рднрдиреНрджрд╛ рдмрдвреА рдЫред
2) рддрд░ рдЕрдЭ рдирд░рд╛рдореНрд░реЛ рдХреБрд░рд╛ рд╕рд╣рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕рдмрдХреНрд╡реЗрд░реАрд╣рд░реВ рд╣реЛ, рдпрд╕рдмрд╛рд╣реЗрдХ, рдПрдХрддреНрд░реАрдХрд░рдгрдХреЛ рд╕рд╛рдеред рдпреЛ рдзреЗрд░реИ рдЦрд░рд╛рдм рдЫред
рдпреЛ рдЕрд╡рд╢реНрдп рдкрдирд┐ рдирд░рд╛рдореНрд░реЛ рд╣реЛред рддрд░ рдпреЛ рдПрдХрд╛рддрд┐рд░ рдорд╛рддреНрд░реИ рд╣реЛред рдЕрд░реНрдХреЛрддрд░реНрдл, рдпреЛ рдзреЗрд░реИ рд░рд╛рдореНрд░реЛ рдЫ, рдХрд┐рдирднрдиреЗ рд╕рдорд╕реНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рд╕рдорд╛рдзрд╛рди рд░ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдХрд┐ рдПрдХ рдЕрдиреБрд░реЛрдз рдЫред
рдЬреНрдпреЛрддрд┐рд╖реА (C)рдХрд╣рд╛рдБ рдирдЬрд╛рдиреБрд╣реЛрд╕реНред
рдХреНрд╡реЗрд░реА рдпреЛрдЬрдирд╛ рддреНрдпрддрд┐ рдЬрдЯрд┐рд▓ рдЫреИрди, рддрд░ рдпреЛ рдПрдХрджрдо рд╕рдВрдХреЗрддрд╛рддреНрдордХ рдЫ:
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЬрдирд╛рддрдкрд╛рдИрд▓рд╛рдИ рдпрд╛рдж рдЫ рдпреЛ рд╕рдмреИ рдХрд╕рд░реА рд╕реБрд░реБ рднрдпреЛред рд╕рдмреИ рдХреБрд░рд╛ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рд░ рдмрд╛рд░рдореНрдмрд╛рд░ рдерд┐рдпреЛ

рд╕рдмреИрднрдиреНрджрд╛ рд░реЛрдЪрдХ рд░ рдЙрдкрдпреЛрдЧреА, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛, рд╕реБрд░реБ рд░ рдЕрдиреНрддреНрдпрдорд╛ рдЫред
рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк (рд▓рд╛рдЧрдд=935.84..479763226.18 рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ=3322 рдЪреМрдбрд╛рдЗ=135) (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп=31.536..8220420.295 рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ=8111656 рд▓реБрдкреНрд╕=1)
рдпреЛрдЬрдирд╛ рд╕рдордп: 3.807 рдПрдордПрд╕
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп: 8222351.640 ms
рдкреВрд░рд╛ рд╕рдордп 2 рдШрдгреНрдЯрд╛ рднрдиреНрджрд╛ рдмрдвреА рдЫред

рддрдкрд╛рдИрд▓рд╛рдИ рдпрд╛рдж рдЫ рдпреЛ рд╕рдмреИ рдХрд╕рд░реА рд╕реБрд░реБ рднрдпреЛред рд╕рдмреИ рдХреБрд░рд╛ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рд░ рдмрд╛рд░рдореНрдмрд╛рд░ рдерд┐рдпреЛ

рдЧрд▓рдд рдкрд░рд┐рдХрд▓реНрдкрдирд╛рд╣рд░реВ рдЬрд╕рд▓реЗ рд╕рдордп рд▓рд┐рдпреЛ

рдкрд░рд┐рдХрд▓реНрдкрдирд╛ 1 - рдЕрдиреБрдХреВрд▓рдХрд▓реЗ рдЧрд▓реНрддреА рдЧрд░реНрдЫ рд░ рдЧрд▓рдд рдпреЛрдЬрдирд╛ рдмрдирд╛рдЙрдБрдЫред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЬрдирд╛ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрди, рд╣рд╛рдореА рд╕рд╛рдЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ https://explain.depesz.com/ред рдпрджреНрдпрдкрд┐, рд╕рд╛рдЗрдЯрд▓реЗ рдХреЗрд╣рд┐ рд░реЛрдЪрдХ рд╡рд╛ рдЙрдкрдпреЛрдЧреА рджреЗрдЦрд╛рдПрдХреЛ рдЫреИрдиред рдкрд╣рд┐рд▓реЛ рд░ рджреЛрд╕реНрд░реЛ рдирдЬрд░рдорд╛, рддреНрдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рдкрдирд┐ рдЫреИрди рдЬреБрди рд╡рд╛рд╕реНрддрд╡рдорд╛ рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫред рдХреЗ рдпреЛ рд╕рдореНрднрд╡ рдЫ рдХрд┐ рдкреВрд░реНрдг рд╕реНрдХреНрдпрд╛рди рдиреНрдпреВрдирддрдо рдЫред рдЕрдШрд┐ рдмрдвред

рд╣рд╛рдЗрдкреЛрдереЗрд╕рд┐рд╕ реи-рдЕрдЯреЛрднреНрдпрд╛рдХреНрдпреВрдо рдкрдХреНрд╖рдмрд╛рдЯ рдЖрдзрд╛рд░рдорд╛ рдкреНрд░рднрд╛рд╡, рддрдкрд╛рдИрдВрд▓реЗ рдмреНрд░реЗрдХрдмрд╛рдЯ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рддрд░ рдЕрдЯреЛрднреНрдпрд╛рдХреНрдпреВрдо рдбреЗрдордирд╣рд░реВрд▓реЗ рд░рд╛рдореНрд░реЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрдЫрдиреН, рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рд▓рд╛рдореЛ-рдЭрдЯреНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдЫреИрдирдиреНред рдХреБрдиреИ рдЧрдореНрднреАрд░ рднрд╛рд░ рдЫреИрдиред рд╣рд╛рдореАрд▓реЗ рдЕрд░реБ рдХреЗрд╣рд┐ рдЦреЛрдЬреНрдиреБ рдкрд░реНрдЫред

Hypothesis 3 - рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдкреБрд░рд╛рдиреЛ рдЫрдиреН, рд╕рдмреИ рдХреБрд░рд╛ рдкреБрди: рдЧрдгрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ

рдлреЗрд░рд┐, рддреНрдпреЛ рд╣реЛрдЗрдиред рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЫрдиреНред рдЬреБрди, рдЕрдЯреЛрднреНрдпрд╛рдХреНрдпреВрдордХреЛ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдЕрднрд╛рд╡рд▓рд╛рдИ рджрд┐рдЗрдпреЛ, рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдЫреИрдиред

рдЕрдиреБрдХреВрд▓рди рд╕реБрд░реБ рдЧрд░реМрдВ

рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ 'wdata' рдкрдХреНрдХреИ рдкрдирд┐ рд╕рд╛рдиреЛ рдЫреИрди, рд▓рдЧрднрдЧ 3 рдорд┐рд▓рд┐рдпрди рд░реЗрдХрд░реНрдбрд╣рд░реВред
рд░ рдпреЛ рдпреЛ рддрд╛рд▓рд┐рдХрд╛ рд╣реЛ рдЬреБрди рдкреВрд░реНрдг рд╕реНрдХреНрдпрд╛рди рдкрдЫреНрдпрд╛рдЙрдБрдЫред

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

рдЦреИрд░, рдпрд╕рд▓реЗ рдорджреНрджрдд рдЧрд░реНрдпреЛ?
рдерд┐рдпреЛ: 8 222 351.640 ms (реи рдШрдгреНрдЯрд╛ рднрдиреНрджрд╛ рдЕрд▓рд┐ рдмрдвреА)
рдпреЛ рднрдпреЛ: ремрепреорел рекрейрез.релренрел ms (рд▓рдЧрднрдЧ реи рдШрдгреНрдЯрд╛)
рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдПрдЙрдЯреИ рд╕реНрдпрд╛рдЙ, рд╕рд╛рдЗрдб рджреГрд╢реНрдпред
рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕ рд╕рдореНрдЭрдиреБрд╣реЛрд╕реН:
"рдХреЗ рддрдкрд╛рдИрд╕рдБрдЧ рдПрдЙрдЯреИ рдЫ, рддрд░ рдкрдЦреЗрдЯрд╛ рдмрд┐рдирд╛? рдЦреЛрдЬреНрдиреЗрдЫред"

рддрдкрд╛рдИрд▓рд╛рдИ рдпрд╛рдж рдЫ рдпреЛ рд╕рдмреИ рдХрд╕рд░реА рд╕реБрд░реБ рднрдпреЛред рд╕рдмреИ рдХреБрд░рд╛ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рд░ рдмрд╛рд░рдореНрдмрд╛рд░ рдерд┐рдпреЛ

рд╕рд┐рджреНрдзрд╛рдиреНрдд рдорд╛, рдпреЛ рдПрдХ рд░рд╛рдореНрд░реЛ рдкрд░рд┐рдгрд╛рдо, рд░рд╛рдореНрд░реЛ, рд░рд╛рдореНрд░реЛ рдЫреИрди, рддрд░ рд╕реНрд╡реАрдХрд╛рд░реНрдп рднрдиреНрди рд╕рдХрд┐рдиреНрдЫред рдХрдореНрддрд┐рдорд╛, рдЧреНрд░рд╛рд╣рдХрд▓рд╛рдИ рдХрддрд┐ рдХрд╛рдо рдЧрд░рд┐рдпреЛ рд░ рдХрд┐рди рд░рд╛рдореНрд░реЛ рднрдпреЛ рднрдиреЗрд░ рд╡рд░реНрдгрди рдЧрд░реНрдиреЗ рдареВрд▓реЛ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рддрд░, рдЕрдиреНрддрд┐рдо рдирд┐рд░реНрдгрдп рднрдиреЗ рдЕрдЭреИ рдЯрд╛рдврд╛ рдЫ ред рдзреЗрд░реИ рдЯрд╛рдврд╛ред

рд░ рдЕрдм рд╕рдмреИрднрдиреНрджрд╛ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдХреБрд░рд╛ - рд╣рд╛рдореА рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫреМрдВ, рд╣рд╛рдореА рдЕрдиреБрд░реЛрдз рдкреЛрд▓рд┐рд╢ рдЧрд░реНрдиреЗрдЫреМрдВ

рдкрд╣рд┐рд▓реЛ рдЪрд░рдг - JOIN рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдкреБрди: рд▓реЗрдЦрд┐рдПрдХреЛ рдЕрдиреБрд░реЛрдз рдЕрдм рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ (рд░рд╛рдореНрд░реЛ рдХрдореНрддрд┐рдорд╛ рдЕрдЭ рд╕реБрдиреНрджрд░):
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
рднрд┐рддреНрд░реА рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реБрдиреЗ wdata рдмрд╛рдЯ w.тАЬSPENT_IDтАЭ=sредтАЭтАЬSPENT_IDтАЭ
INNER Join pmtr p ON p. "PARAMETER_ID" = w. "PARAMETER_ID"
INNER JOIN spent_pd sp ON sред "SPENT_ID" = spред "SPENT_ID"
рднрд┐рддреНрд░реА рд╕рдореНрдорд┐рд▓рд┐рдд pd pd ON 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")
w2 рдорд╛ w2 рднрд┐рддреНрд░реА рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реБрдиреЗ wdata рдмрд╛рдЯред "SPENT_ID"=s2ред "SPENT_ID"
INNER Join wdata w
ON w2. "LRM" = w. "LRM");
рдпреЛрдЬрдирд╛ рд╕рдордп: 2.486 рдПрдордПрд╕
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп: 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 w INNER JOIN рдЦрд░реНрдЪ s ON sред "SPENT_ID" = w. "SPENT_ID"
INNER Join pmtr p ON p. "PARAMETER_ID" = w. "PARAMETER_ID"
INNER JOIN spent_pd sp ON sред "SPENT_ID" = spред "SPENT_ID"
рднрд┐рддреНрд░реА рд╕рдореНрдорд┐рд▓рд┐рдд pd pd ON pd. "PD_ID" = sp. "PD_ID"
рднрд┐рддреНрд░реА рд╕рд╛рдореЗрд▓ рд╣реБрдиреБрд╣реЛрд╕реН (w2 рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред "LRM", MAX(s2. "SPENT_DATE")
рдмрд╛рдЯ s2 INNER W2 ON s2 рдорд╛ wdata рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реБрдиреБрд╣реЛрд╕реНред "SPENT_ID" = w2ред "SPENT_ID"
W2 рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣ред "LRM"
) md on w. "LRM" = md. "LRM"
рдХрд╣рд╛рдБ
sред"SPENT_DATE" >= '2018-07-01' рд░ sред"SPENT_DATE" <= '2018-09-30';
рдпреЛрдЬрдирд╛ рд╕рдордп: 2.291 рдПрдордПрд╕
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп: 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 w INNER JOIN рдЦрд░реНрдЪ s ON sред "SPENT_ID" = w. "SPENT_ID"
INNER Join pmtr p ON p. "PARAMETER_ID" = w. "PARAMETER_ID"
INNER JOIN spent_pd sp ON sред "SPENT_ID" = spред "SPENT_ID"
рднрд┐рддреНрд░реА рд╕рдореНрдорд┐рд▓рд┐рдд pd pd ON pd. "PD_ID" = sp. "PD_ID"
рднрд┐рддреНрд░реА рд╕рдореНрдорд┐рд▓рд┐рдд (w2 рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред "LRM", MAX(s2. "SPENT_DATE") "SPENT_DATE" рдХреЛ рд░реВрдкрдорд╛
рдмрд╛рдЯ s2 INNER W2 ON s2 рдорд╛ wdata рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реБрдиреБрд╣реЛрд╕реНред "SPENT_ID" = w2ред "SPENT_ID"
W2 рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣ред "LRM"
) md ON mdред "SPENT_DATE" = sред "SPENT_DATE" AND mdред "LRM" = w. "LRM"
рдХрд╣рд╛рдБ
sред"SPENT_DATE" >= '2018-07-01' рд░ sред"SPENT_DATE" <= '2018-09-30';
рдпреЛрдЬрдирд╛ рд╕рдордп: 3.192 рдПрдордПрд╕
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп: 208014.134 ms

рддреНрдпрд╕реЛрднрдП, рд╣рд╛рдореАрд▓реЗ рдХреЗ рд╕рд╛рде рдЕрдиреНрддреНрдп рдЧрд░реНрдЫреМрдВ рддреНрдпреЛ рдкрд╣рд┐рд▓реЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдкрд░рд┐рдгрд╛рдо рд╣реЛ, рдЬреБрди рдЧреНрд░рд╛рд╣рдХрд▓рд╛рдИ рджреЗрдЦрд╛рдЙрди рд▓рд╛рдЬрдХреЛ рдХреБрд░рд╛ рд╣реЛрдЗрди:
рдпрд╕рдмрд╛рдЯ рд╕реБрд░реБ рднрдпреЛ: 8 222 351.640 ms (2 рдШрдгреНрдЯрд╛ рднрдиреНрджрд╛ рдмрдвреА)
рд╣рд╛рдореАрд▓реЗ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдлрд▓ рднрдпреМрдВ: 1 ms (223 рдорд┐рдиреЗрдЯ рднрдиреНрджрд╛ рдЕрд▓рд┐ рдмрдвреА)ред
рдирддрд┐рдЬрд╛ (рдЕрдиреНрддрд░рд┐рдо): 208 014.134 ms (рдХреЗрд╡рд▓ 3 рдорд┐рдиреЗрдЯ рднрдиреНрджрд╛ рдмрдвреА)ред

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

рддрдкрд╛рдИрд▓рд╛рдИ рдпрд╛рдж рдЫ рдпреЛ рд╕рдмреИ рдХрд╕рд░реА рд╕реБрд░реБ рднрдпреЛред рд╕рдмреИ рдХреБрд░рд╛ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рд░ рдмрд╛рд░рдореНрдмрд╛рд░ рдерд┐рдпреЛ

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

рд╣рд╛рдореА рддреНрдпрд╣рд╛рдБ рд░реЛрдХрд┐рди рд╕рдХреНрдереНрдпреМрдВред
рддрд░тАж
рдЦрд╛рдирд╛ рдЦрд╛рдПрд╕рдБрдЧреИ рднреЛрдХ рд▓рд╛рдЧреНрдЫ ред рдЬреЛ рд╣рд┐рдБрдбреНрдЫ рдЙрд╕реИрд▓реЗ рдмрд╛рдЯреЛ рдирд┐рдкреБрдг рдмрдирд╛рдЙрдБрдЫред рдХреБрдиреИ рдкрдирд┐ рдкрд░рд┐рдгрд╛рдо рдордзреНрдпрд╡рд░реНрддреА рдЫред рд░реЛрдХрд┐рдпреЛ рд░ рдорд░реЗред рдЖрджрд┐ред
рдЕрдиреБрдХреВрд▓рди рдЬрд╛рд░реА рд░рд╛рдЦреМрдВред
рдЙрдЪреНрдЪ рд╡рд┐рдЪрд╛рд░ред рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдЧреНрд░рд╛рд╣рдХрд▓реЗ рд╡рд╛рд╕реНрддрд╛ рдЧрд░реЗрди рднрдиреЗрд░ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрджреИред рд░ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рдХрдбрд╛ рд░реВрдкрдорд╛ред

рддреНрдпрд╕реЛрднрдП, рдпреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рдкреБрди: рдбрд┐рдЬрд╛рдЗрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдордп рд╣реЛред рдХреНрд╡реЗрд░реА рдврд╛рдБрдЪрд╛ рдЖрдлреИрдВрд▓рд╛рдИ рдЕрдм рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрди (рдпрджреНрдпрдкрд┐, рдпреЛ рдкрдЫрд┐ рджреЗрдЦрд╛ рдкрд░реНрдпреЛ, рддреНрдпрд╣рд╛рдБ рд╕рдмреИ рдХреБрд░рд╛ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдЕрд╕рдлрд▓ рд╣реБрдиреНрдЫ рднрдиреЗрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рд╡рд┐рдХрд▓реНрдк рдЫ)ред рддрд░ рдбрд╛рдЯрд╛рдмреЗрд╕ рдбрд┐рдЬрд╛рдЗрдирд▓рд╛рдИ рдЕрдиреБрдХреВрд▓рди рд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдиреБ рдкрд╣рд┐рд▓реЗ рдиреИ рдзреЗрд░реИ рдЖрд╢рд╛рдЬрдирдХ рд╡рд┐рдЪрд╛рд░ рд╣реЛред рд░ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд░реЛрдЪрдХред рдлреЗрд░рд┐, рдЖрдлреНрдиреЛ рдЬрд╡рд╛рдиреА рд╕рдореНрдЭрдиреБрд╣реЛрд╕реНред рдЖрдЦрд┐рд░, рдо рддреБрд░реБрдиреНрддреИ DBA рдмрдиреНрди рд╕рдХрд┐рди, рдо рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ (рдмреЗрд╕рд┐рдХ, рдПрд╕реЗрдореНрдмрд▓рд░, C, рдбрдмрд▓-рдкреНрд▓рд╕ C, Oracle, plsql) рдХреЛ рд░реВрдкрдорд╛ рд╣реБрд░реНрдХреЗрдВред рдПрдХ рд░реЛрдЪрдХ рд╡рд┐рд╖рдп, рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдорд░рдг рдХреЛ рд▓рд╛рдЧреА ;-)ред
рдпрджреНрдпрдкрд┐, рд╡рд┐рдЪрд▓рд┐рдд рдирдЧрд░реМрдВред

рд░ рддреНрдпрд╕реИрд▓реЗ,

рддрдкрд╛рдИрд▓рд╛рдИ рдпрд╛рдж рдЫ рдпреЛ рд╕рдмреИ рдХрд╕рд░реА рд╕реБрд░реБ рднрдпреЛред рд╕рдмреИ рдХреБрд░рд╛ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рд░ рдмрд╛рд░рдореНрдмрд╛рд░ рдерд┐рдпреЛ

рд╡рд╛ рд╢рд╛рдпрдж рд╡рд┐рднрд╛рдЬрдирд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ?
рд╕реНрдкреЛрдЗрд▓рд░ - "рд╣реЛ, рдпрд╕рд▓реЗ рдорджреНрджрдд рдЧрд░реНрдпреЛ, рдкреНрд░рджрд░реНрд╢рдирд▓рд╛рдИ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди рд╕рд╣рд┐рддред"

рддрд░ рдпреЛ рдПрдХрджрдо рдлрд░рдХ рдХрдерд╛ рд╣реЛ ...

рдлреЗрд░рд┐ рдЬрд╛рд░реА рд░рд╛рдЦреМрдВрд▓рд╛тАж

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди