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