рд╣рд░ рдмрд╛рд░ рд░рд╛рд╢рд┐рдпреЛрдВ рдФрд░ рдФрд╕рдд рдХрд╛ рдкреБрдирд░рд╛рд╡рд░реНрддрди рдХреИрд╕реЗ рди рдХрд░реЗрдВ

рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рднреБрдЧрддрд╛рди рдкреНрд░рдгрд╛рд▓реА рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИред рдФрд░ рд╣рдо рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдФрд╕рдд рдСрдкрд░реЗрд╢рди рдХрд┐рд╕ рдЖрдХрд╛рд░ рдХрд╛ рд╣реИред рдЖрд╕рд╛рди рд╣реИ, рдпрд╣рд╛рдБ рдЕрдиреБрд░реЛрдз рд╣реИ, рдЗрд╕реЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ:

> SELECT avg(amount) FROM transfer;
65.125965782378
generated in
3850 seconds


рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдХреЗрддрдХ рд╕рдмрд╕реЗ рддрд╛рдЬрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рд╣рд░ рджреВрд╕рд░реЗ рджрд┐рди рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдорд╣реАрдиреЗ рдореЗрдВ рд▓рд╛рдЦреЛрдВ рдЬрдорд╛ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╛ рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рд░ рдПрдХ рд╣реА рд╣реИ - рд╣рд░ рдмрд╛рд░ рдПрдХ рд╣реА рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИред рдирд┐рдпрдорд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдРрд╕реА рдЕрдиреБрдХреВрд▓рди рдХреА рдкреЗрд╢рдХрд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдХреИрд╕реЗ рд╣реЛ?

рд╕рд╛рдЗрдХрд┐рд▓ рдХреА рд╕рд╡рд╛рд░реА рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдЗрдХрд▓рд┐рдВрдЧ рдХрдВрдкреНрдпреВрдЯрд░ рдФрд╕рдд рдЧрддрд┐ рдХреЛ рдХрд┐рддрдиреА рд▓рдВрдмреА рдФрд░ рд╣рд░ рд╕реЗрдХрдВрдб рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдЧрддрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдм, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдПрд╕рдбреА рдХрд╛рд░реНрдб рдмрд╛рдЗрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрдм рд╕рд╛рд▓реЛрдВ рдкрд╣рд▓реЗ рдРрд╕реА рдХреЛрдИ рдореЗрдореЛрд░реА рдирд╣реАрдВ рдереАред

рдпрд╣ рд╕рд░рд▓ рд╣реИ: рдпрд╣ рдпрд╛рддреНрд░рд╛ рдХреА рдЧрдИ рджреВрд░реА рдФрд░ рд╕рдордп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рд╣рд░ рд╕реЗрдХрдВрдб рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕рдордп рдХрд╛рдЙрдВрдЯрд░ рдмрдврд╝рд╛рдиреЗ рдФрд░ рдУрдбреЛрдореАрдЯрд░ рдХреА рдпрд╛рддреНрд░рд╛ рдХреА рджреВрд░реА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред 4 рдпрд╛ 8 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдХреЗрд╡рд▓ 2 рдорд╛рди, рдХреБрд▓ 2 рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЪрд╛рд▓рдиред рдорддрд▓рдм рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЕрдиреНрдп рд░реВрдкрд╛рдВрддрд░рдг



рднреБрдЧрддрд╛рди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рд╕рдордп-рд╕рдордп рдкрд░ рди рдХреЗрд╡рд▓ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рд░рд╛рд╢рд┐ рдпрд╛ рдФрд╕рдд рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рднреА рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рд╣реА рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ, рдЕрдЧрд░ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдореВрд▓реНрдп рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реИред

рд░рд╛рд╢рд┐ рдХреА рдХрдЯреМрддреА

рдпрджрд┐ рд╣рдо d 1 рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрджрд┐ рд╣рдо рдХреБрдЫ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╣рдо рджреЛ рдмрд╛рд░ рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: рдкреБрд░рд╛рдиреЗ рдореВрд▓реНрдп рдХреЛ рдФрд╕рдд рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдЬреЛрдбрд╝реЗрдВред

рдФрд╕рдд рдореВрд▓реНрдп рдЕрджреНрдпрддрди

рдЬреЛ рд▓реЛрдЧ рдЧрдгрд┐рдд рдЬрд╛рдирддреЗ рд╣реИрдВ рд╡реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдРрд╕реЗ рд╕реВрддреНрд░реЛрдВ рдореЗрдВ рд╡рд┐рдЪрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╡рд┐рдЪрд░рдг, рдЙрддреНрдкрд╛рдж, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рддреНрд░рд╛ рдХрд╛ рдЙрддреНрдкрд╛рдж (рдпрд╛ рд╕рд╣рд╕рдВрдпреЛрдЬрдХ)ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЬреНрдЮрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред

рдкреНрд░реЛрдлрд╛рдЗрд▓



рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╢реНрдиреЛрдВ рд╕реЗ рдПрдХ рдкреНрд░рд╢реНрдирд╛рд╡рд▓реА рднрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╡реЗ 1 рд╕реЗ 100 рдХреЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рдордЭреМрддреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ (рдордЬрдмреВрдд рд╕рдордЭреМрддреЗ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рдЕрд╕рд╣рдордд)ред 2 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЕрд░реНрдерд╛рддреН, рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрддреНрддрд░ рдХреЗ рдмреАрдЪ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди:



i рдФрд░ j рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВред рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХреНрд╕ рдФрд░ рд╕рдореВрд╣ рдХреЗ рдмреАрдЪ рдФрд░ рдЙрд╕рдХреЗ рдФрд░ рдЕрдиреНрдп рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред (рдореИрдВ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА рд╕реЗ рд╡рд┐рджрд╛ рд╣реЛ рдЧрдпрд╛, рд╡рд┐рдЪрд░рдг рдореЗрдВ n рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдЧрдгрдирд╛рдУрдВ рдХрд╛ рд╕рд╛рд░ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдЗрд╕рд╕реЗ рдЧреБрдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрджрд▓реАред)

рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдХреНрд╡реЗрд░реА рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдереА:

  рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
         avg (рд╢рдХреНрддрд┐ (my_answer.value - his_answer.value, 2))

     рд╕реЗ
         рдЙрддреНрддрд░ as my_answer
             INNER JOIN рдЬрд╡рд╛рдм my_answer as my_answer.question_id = his_answer.question_id рдкрд░ рд▓рд┐рдЦреЗрдВ

     рдХрд╣рд╛рдВ
         my_answer.user_id = X AND
         his_answer.user_id = Y 


рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рд╕реНрдерд┐рддрд┐ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  ...
     рдХрд╣рд╛рдВ
         рдЙрд╕рдХрд╛_рд╢рдмреНрдж.рд╕реЗрд░_рд┐рдб рдЗрди (рдЬреЗрдб) рдФрд░
         ... 


рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ, рдпрджрд┐ рдЖрдк рд╕рднреА рдХреЗ рд╕рд╛рде рдЙрддреНрддрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкреВрд░реА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдмреЗрд╢рдХ, рдЖрдк рдЗрд╕реЗ рдХреИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - 50 рд╕рд╡рд╛рд▓ рдФрд░ 10,000 рдкреНрд░рд╢реНрдирд╛рд╡рд▓реА, рдпрд╛рдиреА 500,000 рд▓рд╛рдЗрдиреЗрдВ, рдмрд╕ рдХреБрдЫ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдореЛрд░реАред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдХреНрд╕рд░ рдкреНрд░рд╢реНрдирд╛рд╡рд▓реА рднрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдХреНрд╕рд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЗрд╕ рд╕реВрддреНрд░ рдкрд░ рдлреИрд▓рд╛рд╡ рд╕реВрддреНрд░ рд╣реИ, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛ рдЬрд┐рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред X q рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЙрддреНрддрд░ рд╣реИ (рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддрдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ) q рдХреЛ рдкреНрд░рд╢реНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, V qu рдПрдХ рд╣реА рдкреНрд░рд╢реНрди q рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ u рдХрд╛ рдЙрддреНрддрд░ рд╣реИред рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдХреБрдЫ рдкреНрд░рд╢реНрди рд╣реИрдВ (m) 50), рддреЛ рдХрдИ рдкреНрд░рд╢реНрдирд╛рд╡рд▓реА (n) 10,000) рд╣реИрдВред рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╡рд╣реА рд╕реВрддреНрд░ рд╣реИ рдЬрд╣рд╛рдБ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпреЛрдЧ (n, 10,000) рдХреЛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреВрд░реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд░ q-sum рдУрд╡рд░рд╣реИрдВрдЧ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╢реНрдиреЛрдВ рд╕реЗ рддреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдЙрдиреНрд╣реЗрдВ рдПрдЧреНрд░реАрдЧреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ 50 рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред рдФрд░ 10,000 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдорд╛рддреНрд░рд╛, рдпреВ, рд╣рдо рдЕрд▓рдЧ-рдерд▓рдЧ рд╣реИрдВ рдФрд░ рдЧрдгрдирд╛ рдФрд░ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рдпреЛрдЧ рдХреЛ рдПрд╕ рдХреНрдпреВ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдпреЛрдЧ рдХреЛ рдЖрд░ рдХреНрдпреВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдорд┐рд▓рддрд╛ рд╣реИ:

рдЫрд╡рд┐

S q рдФрд░ R q рдХреЛ рдПрдХ рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЧрдгрдирд╛ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдорд╛рдк



рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИ рдЬреЛ рдЕрдореВрд░реНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЕрдореВрд░реНрдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрддреНрддрд░ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рднрд░рддреА рд╣реИ, рдЙрддреНрддрд░ред рд╣рдореЗрдВ рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

  рдЖрдпрд╛рдд sys, sqlite3, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ, itertools

 USERS = xrange (100000)
 рдкреНрд░рд╢реНрди = xrange (50)

 con = sqlite3.connect ('рдПрдХрддреНрд░реАрдХрд░рдг.рд╕рдХреНрд▓рд╛рдЗрдЯ 3')
 cur = conn.cursor ()

 cur.execute ('рдбреНрд░реЙрдк рдЯреЗрдмрд▓ рдпрджрд┐ рдореМрдЬреВрдж рд╣реИ рддреЛ рдЙрддреНрддрд░');
 cur.execute ('рддрд╛рд▓рд┐рдХрд╛ рдЙрддреНрддрд░ (user_id рдкреВрд░реНрдгрд╛рдВрдХ, question_id рдкреВрд░реНрдгрд╛рдВрдХ, рдорд╛рди рдкреВрд░реНрдгрд╛рдВрдХ) рдмрдирд╛рдПрдБ)'

 рдпреВ рдХреЗ рд▓рд┐рдП, itertools.product рдореЗрдВ q (USERS, рдкреНрд░рд╢реНрди):
	 cur.execute ('рдЙрддреНрддрд░ рдорд╛рдиреЛрдВ рдореЗрдВ рдбрд╛рд▓реЗрдВ (?,?)?', (u, q, random.randint (1, 100)))

 # рд╣рдо рдбреЗрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдмрд╛рдж рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рддреЗ рд╣реИрдВ,
 # рддрд╛рдХрд┐ рдмрд╛рдЗрдирд░реА рдкреЗрдбрд╝ рдХреЛ рдкреБрди: рд╕рдореНрдорд┐рд▓рди рдХреЗ рджреМрд░рд╛рди рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рди рдмрдирд╛рдпрд╛ рдЬрд╛рдП
 cur.execute ('рдЙрддреНрддрд░ рдкрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ answer_user рдмрдирд╛рдПрдВ (user_id)')
 cur.execute ('рдЙрддреНрддрд░ рдкрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ answer_question рдмрдирд╛рдПрдБ (question_id)')
 con.commit ()

 cur.execute ("")
	 рдХреЗ рд░реВрдк рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ answer_summary рдмрдирд╛рдПрдВ
	 question_id, sum (рдорд╛рди) value, sum (рдорд╛рди * value) value_square, count (*) num рдЪреБрдиреЗрдВ
	 рдЙрддреНрддрд░ рд╕реЗ
	 question_id рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣
	 "" ")

 cur.execute ('answer_summary (question_id) рдкрд░ рдЕрджреНрд╡рд┐рддреАрдп рд╕реВрдЪрдХрд╛рдВрдХ answer_question рдмрдирд╛рдПрдВ') 


100,000 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП 50 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ - 5 рдорд┐рд▓рд┐рдпрди рд░рд┐рдХреЙрд░реНрдбред рдореЗрд░реЗ рдХрдордЬреЛрд░ рд▓реИрдкрдЯреЙрдк (1.5 рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬ x2 рдФрд░ 2 рдЬреАрдмреА рдореЗрдореЛрд░реА) рдкрд░, рдЯреЗрдмрд▓ рд▓рдЧрднрдЧ рдЖрдзреЗ рдШрдВрдЯреЗ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдереЗ, рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╛рдЗрд▓ рджрд╕рд┐рдпреЛрдВ рд╕реЗ рд╕реИрдХрдбрд╝реЛрдВ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рддрдХ рдирд┐рдХрд▓реА рдереАред

рдореИрдВрдиреЗ рдХрдИ рдкреНрд░рд╢реНрдиреЛрдВ рдФрд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдкреНрд░рд╢реНрди рдХрд┐рдП, рдЬрд┐рдирдХреА рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╕рдВрд╡реЗрджрдирд╛рдПрдВ рдореИрдВ рдиреАрдЪреЗ рджреЗрддрд╛ рд╣реВрдВред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рдХреИрд╢реНрдб рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдХреЗрд╡рд▓ рдЧрдгрдирд╛ рдзреАрдорд╛ рдХрд░ рджреЗрддреА рд╣реИ: рд╕реВрдЪрдХрд╛рдВрдХ рдЦреЛрдЬ рдФрд░ рдЬреЛрдбрд╝ред

рдФрд░ рдпрд╣рд╛рдВ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ, рдЕрдЧрд░ рд╣рдо рдЙрддреНрддрд░реЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:

рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде
рд╕рднреА рдХреЗ рд▓рд┐рдПрд╕реЗрдХрдВрдбрддреБрд░рдВрдд
рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдорд┐рдирдЯрддреБрд░рдВрдд


рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ



рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ (рд╣рдЬрд╛рд░реЛрдВ рдФрд░ рдЕрдзрд┐рдХ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╣реИ, рдмрдЬрд╛рдп рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рднреЗрдЬрдиреЗ рдФрд░ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ - рдпрд╣ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкреНрд░рд╢реНрдирд╛рд╡рд▓реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ 50 + 50 рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рдореВрд▓ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЬрд╣рд╛рдВ рдХреЛрдб рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реЛрдЧрд╛ред

рд░рд╛рд╢рд┐ рдЕрдкрдбреЗрдЯ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЖрдкрдХреЛ рдЯреЗрдмрд▓ рдЬреЙрдЗрди рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ рдЕрджреНрдпрддрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдбреЗрдЯрд╛ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ INSERT рдпрд╛ REPLACE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЬрд╣рд╛рдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ



рд╕реНрдкреАрдбреЛрдореАрдЯрд░ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд╛рдкрд╕ рдЪрд▓рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реА рдХрд┐рд▓реЛрдореАрдЯрд░ рдкреНрд░рддрд┐ рдШрдВрдЯреЗ рдореЗрдВ рдФрд╕рдд рдЧрддрд┐ рд╣реИред рд╣рдо рдЗрд╕реЗ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рдореАрдЯрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдХрд┐рдореА / рдШрдВрдЯрд╛ рд╕реЗ рдПрдо / рдПрд╕ рддрдХ рдЧрд┐рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рддрдм рдПрдХрддреНрд░ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣реА рдмрд╛рдд рд╣реЛрддреАред

рдпрджрд┐ рд╣рдо рдФрд╕рдд рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдФрд╕рдд рд╡рд╛рдпреБ рдкреНрд░рддрд┐рд░реЛрдз (рдЧрддрд┐ рдХреЗ рд╡рд░реНрдЧ рдХреЗ рдЖрдиреБрдкрд╛рддрд┐рдХ) рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдлрд▓ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдпреЛрдЧ рдорд╛рдиреЛрдВ рдХреЗ рдпреЛрдЧ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ



рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдУрдПрд▓рдПрдкреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдУрдЖрд░рдПрдо рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреНрд╡реЗрд░реА рд╢реАрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдмрд╛рдж рдореЗрдВ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм, рджреВрд╕рд░реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдордЭреЗрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдХреВрд▓рди рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдХреИрд╕реЗ Django рдореЗрдВ рдореЙрдбрд▓ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:

  рдХрдХреНрд╖рд╛ рдкреНрд░рд╢реНрди (рдореЙрдбрд▓):
     рдкрд╛рда = рдЪрд╛рд░Field ()


 рдХрдХреНрд╖рд╛ рдЙрддреНрддрд░ (рдореЙрдбрд▓):
     рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ = рд╡рд┐рджреЗрд╢реАрдХреЗ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛)
     рдкреНрд░рд╢реНрди = рд╡рд┐рджреЗрд╢реАрдХреЗ (рдкреНрд░рд╢реНрди)
     рдорд╛рди = IntegerField ()


 рд╡рд░реНрдЧ рдЙрддреНрддрд░рдЕрдиреБрд░реВрдк (рдореЙрдбрд▓):
     рд╕рд╡рд╛рд▓ = рд╡рд┐рджреЗрд╢реАрдХреЗ (рдкреНрд░рд╢реНрди, рд╕рдВрдмрдВрдзрд┐рдд_рдирд╛рдо = 'рд╕рдореБрдЪреНрдЪрдп')
     рд╕рдо = рдЗрдВрдЯреЗрдЧрд░рдлрд┐рд▓реНрдб ()
     sum_of_squares = IntegerField ()
     answer_count = IntegerField ()


 def add_to_aggregates (* kwargs):
     рдЙрддреНрддрд░ = рдХреНрд╡рд╛рд░реНрдЧреНрд╕ ['рдЙрджрд╛рд╣рд░рдг']
     answer.question.aggregates.update (
         sum = F ('sum') + answer.value,
         sum_of_squares = F ('sum_of_squares') + answer.value ** 2,
         answer_count = F ('answer_count') + 1
     )


 def remove_from_aggregates (* kwargs):
     рдЙрддреНрддрд░ = рдХреНрд╡рд╛рд░реНрдЧреНрд╕ ['рдЙрджрд╛рд╣рд░рдг']
     answer.question.aggregates.update (
         sum = F ('sum') - answer.value,
         sum_of_squares = F ('sum_of_squares') - answer.value ** 2,
         answer_count = F ('answers_count') - 1
     )


 signal.post_add.connect (add_to_aggregates, model = Answer)
 signal.pre_update.connect (remove_from_aggregates, рдореЙрдбрд▓ = рдЙрддреНрддрд░)
 signal.post_update.connect (add_to_aggregates, model = Answer)
 signal.pre_delete.connect (remove_from_aggregates, рдореЙрдбрд▓ = рдЙрддреНрддрд░)

рдЬрдм рд╣рдо рдПрдХ рдЙрддреНрддрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдШрдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреБрд░рд╛рдиреЗ рдХреЛ рдШрдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдирдпрд╛ рдорд╛рди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рдПрдХ рдЖрдХрд░реНрд╖рдХ рд╣реЛрдорд╡рд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк ORM рдпрд╛ SQL рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдХреНрд╡реЗрд░реА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕реВрддреНрд░ рд╕реЗ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред

рдореВрд▓реНрдп рдореЗрдВ рд╕реБрдзрд╛рд░



рдЗрд╕ рддрд░рд╣ рдХреА рдЧрдгрдирд╛рдУрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рд╕рдореАрдЪреАрди рд╣реИ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИред рдкреНрд░рд╢реНрдирд╛рд╡рд▓реА рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдХреБрдЫ рд╣рдЬрд╝рд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рднреА рдзреАрдорд╛ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реБрдЖ, рдФрд░ рджрд╕ рд╣рдЬрд╝рд╛рд░ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдПрдХ рдЫреЛрдЯреА рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рднреА рдбреЗрдЯрд╛ рдХреА рдЗрддрдиреА рдорд╛рддреНрд░рд╛ рдХрд╛рдлреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдПрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЙрджреНрдпрдо рдкрд░ рднреАред рдирд┐рдпрдорд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдЬ рдРрд╕реЗ рдЕрдиреБрдХреВрд▓рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреБрдХреВрд▓рди OLAP рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреЗ рдЙрджреНрдпрдо рдХреЗ рд▓рд┐рдП рд╡реЗ рдорд╣рдВрдЧреЗ рдФрд░ рднрд╛рд░реА рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдЫреЛрдЯреЗ рдЕрдиреБрдХреВрд▓рди рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдРрд╕реЗ рдЕрдиреБрдХреВрд▓рди рдХреА рдХреАрдордд рд╣реЛрдЧреА:

1. рдлрд╛рд░реНрдореВрд▓рд╛рдмрджреНрдз рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдордЭреЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЧрдгрд┐рддреАрдп рдЖрдБрдХрдбрд╝реЛрдВ рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЬреНрдЮрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
2. ORM рдореЗрдВ рдПрдХ рдЯреНрд░рд┐рдЧрд░ рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рдбреАрдмрдЧ рдХрд░реЗрдВред
3. рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рджреЗрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рдмрд╛рдж рдирдпрд╛ рдХрд░реНрдордЪрд╛рд░реА рд╕рд╛рдорд╛рдиреНрдп рдХреБрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рди рдХрд░реЗрдВред

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



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рдк рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рдореБрдЦреНрдп рдмреНрд░реЗрдХ (рдПрд╕рдпреВрдПрдо, рдПрд╡реАрдЬреА) рдбрд┐рд╕реНрдХ рдкрдврд╝рдиреЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╣реИред

рджреВрд╕рд░реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрдЯрд┐рд▓ рдПрдХрддреНрд░рд┐рдд рдХрд╛рд░реНрдп рднреА рд╡рд┐рдШрдЯрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдореБрдЪреНрдЪрдп рдХреЛ рдЙрдирдореЗрдВ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдЕрдВрддрд░ рдХреЗ рд╡рд░реНрдЧ рдХреЛ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдорд╛рддреНрд░рд╛ рдФрд░ рдЙрдирдХреЗ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдпреЛрдЧред рд░рд╛рд╢рд┐рдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдкреВрд░реНрд╡ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рддреИрдпрд╛рд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рд░рд┐рдкреЛрд░реНрдЯ рдХреА рд╕рдВрд╕рд╛рдзрди рдЦрдкрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, O (n) рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдШрдЯ рдЬрд╛рддреА рд╣реИред рдЧреАрдЧрд╛рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░, рдпрд╣ рдХрд╛рдо рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддреНрд╡рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╡рд┐рднрд╛рдЬрд┐рдд рд╕реЗрдХрдВрдб рддрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рддреНрд╡рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддреАрд╕рд░рд╛, рдЖрдк рдирдП рдбреЗрдЯрд╛ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдкреБрд░рд╛рдиреЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХрддреНрд░ рдХрд┐рдП рдмрд┐рдирд╛ рдкреБрд░рд╛рдиреЗ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдФрд░ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреБрдирд░реНрдЧрдгрдирд╛ рдХреЗ рд╕рдВрд╕рд╛рдзрди рдЙрдкрднреЛрдЧ рдореЗрдВ рднреА O (n) рд╕рдордп рдХреА рдХрдореА рд╣реЛрдЧреАред

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

рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП: рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╣реИред

Source: https://habr.com/ru/post/In139622/


All Articles