рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЪреБрдирдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред
рдпрджрд┐ MySQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
SELECT *
FROM users
WHERE role_id=5
ORDER BY rand()
LIMIT 10
рдмрдбрд╝реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХреЛрдб рдмреЗрд╣рдж рдзреАрдорд╛ рд╣реИред
рдпрджрд┐ рдХреНрд╡реЗрд░реА рдХреЛ WHERE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╛ рддрд╛рд▓рд┐рдХрд╛ рдЫреЛрдЯреА рд╣реИ, рддреЛ рдкреНрд░рднрд╛рд╡реА рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
habrahabr.ru/post/54176 рдпрд╛
habrahabr.ru/post/55864 ред
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рдмрдбрд╝реА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдкрд░ рдирдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реБрдП, рд╢рд░реНрдд рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, MySQL рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ ORDER BY рд░реИрдВрдб () рд▓рд┐рдорд┐рдЯ рдПрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╢рд░реНрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рд╣реА MSSQL рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред
рдЗрд╕рд▓рд┐рдП, рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди "рд╕рд┐рд░ рдкрд░", рдЕрдиреБрд░реЛрдз (рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 5 рдорд┐рд▓рд┐рдпрди рд░рд┐рдХреЙрд░реНрдб):
SELECT *
FROM users
WHERE role_id=5
ORDER BY rand()
LIMIT 10
рдЕрдиреБрд░реЛрдз рдореЗрдВ 41.3544 рд╕реЗрдХрдВрдб рд▓рдЧреЗ, рдЬреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд░реВрдк рд╕реЗ рд▓рдВрдмрд╛ рд╣реИред рдЕрдзрд┐рдХрддрдо рдФрд░ рдиреНрдпреВрдирддрдо рдЖрдИрдбреА рдвреВрдВрдврдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдВрддрд░рд╛рд▓ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрдИрдбреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ: WHERE рдХреНрд▓реЙрдЬ рдХреЗ рдХрд╛рд░рдг, рдЖрдИрдбреА рдЕрдм рдХреНрд░рдо рдореЗрдВ рдФрд░ рдЫреБрдЯреНрдЯреА рдирд╣реАрдВ рджреА рдЬрд╛рддреА рд╣реИред
рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ: рдПрдХ random_seed рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ id рдФрд░ random_seed рдлрд╝реАрд▓реНрдб рд╣реИрдВ, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдЗрд╕ рдХреЙрд▓рдо рдореЗрдВ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдЙрд╕ рдХреЙрд▓рдо рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪрдпрди рд╣реЛрдЧрд╛ред
рдЕрдм, рд╕реНрдерд┐рддрд┐ рджреНрд╡рд╛рд░рд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддрд╛рд░реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд╡реЗрд░реА рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ (рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, 5 рдорд┐рд▓рд┐рдпрди рд░рд┐рдХреЙрд░реНрдб):
SELECT
u1.*
FROM
users u1,
random_seed rs
WHERE
u1.role_id=5 AND u1.id=(rs.id+random_from_php)
ORDER BY
rs.random_seed
LIMIT 10
рдЕрдиреБрд░реЛрдз рдореЗрдВ 0.0460 рд╕реЗрдХрдВрдб рд▓рдЧреЗ, рдЬреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдЪрд░ random_from_php рдЙрд╕ рдХреЛрдб рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЕрдиреБрд░реЛрдз рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдирдП рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЪрдпрди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧреАред рд░реИрдВрдбрдо_рд╕реЗрдб рдЯреЗрдмрд▓ рдореЗрдВ рдЙрддрдиреЗ рд╣реА рдорд╛рди рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдЬрд┐рддрдиреЗ рдЯреЗрдмрд▓ рд╕реЗ рдЖрдк рд░реИрдВрдбрдо рд░реЛ + рдПрди рд░рд┐рдХреЙрд░реНрдб рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдПрди рд░реИрдВрдбрдо_рдлреНрд░реЗрдо_рдлрдкреА рдХрд╛ рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рдорд╛рди рд╣реИред
рдореЗрд░реЗ рдХрд╛рдо рдХрд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрдиреЛрдВ (рдХреБрд▓ 4,000,000 рд░рд┐рдХреЙрд░реНрдб) рд╕реЗ рд╕рд╛рдорд╛рдиреЛрдВ рдХреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рд╣реИ:
рд╕рд╛рдорд╛рдиреНрдп: рдЕрдиреБрд░реЛрдз | "рддреНрд╡рд░рд┐рдд" рдЕрдиреБрд░реЛрдз: |
рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ oc1ред * рд╕реЗ object_category oc1 рдХрд╣рд╛рдБ oc1.region_id = 6 рд░реИрдВрдб рджреНрд╡рд╛рд░рд╛ рдЖрджреЗрд╢ () рд╕реАрдорд╛ резреж
| рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ oc1ред * рд╕реЗ object_category oc1, random_seed rs рдХрд╣рд╛рдВ oc1.id = (rs.id + 564756) рдФрд░ oc1.region_id = 6 рдЖрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ rs.random_seed рд╕реАрдорд╛ резреж
|
рд▓реАрдб рд╕рдордп: | |
1.726s | 0.007s |
1.851s | 0.010s |
1.803s | 0.006s |
1.784s | 0.008s |
рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдХреЗ рд▓рд╛рдн:
+ рд╣рд╛рд▓рдд рджреНрд╡рд╛рд░рд╛ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рд╕рдВрднрд╡ рддрд░реАрдХрд╛
+ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
+ рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдорд╛рди рдкреБрдирд░рд╛рд╡реГрддрд┐ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ
рд╡рд┐рдкрдХреНрд╖:
- рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
- рдкрд░рд┐рдЪрд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛