рдЕрдиреБрдХреВрд▓рди рдЖрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ - рдХрд┐рддрдиреЗ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ

MySQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ SELECT, INSERT рдХреЛ рдХреИрд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реИ, рдЖрдкрдХреЛ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рд╣реИ, рдЖрджрд┐ред рдЖрджрд┐

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

рдЬреБрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ ORDER BY рдХрд╛ рдЕрдиреБрдХреВрд▓рдиред


рдмрд╣рд╛рдирд╛: рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдирд╣реАрдВ рдорд┐рд▓рд╛!

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

рдЕрдиреБрдХреВрд▓рди рдореИрдиреБрдЕрд▓ рд╕реЗ рд▓рдШреБ рдЕрдВрд╢:

===
рдХреИрд╕реЗ MySQL рдЖрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ
рдиреАрдЪреЗ рдХреБрдЫ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ MySQL ORDER BY рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
...
рдХрдИ рдЯреЗрдмрд▓ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рдФрд░ рдХреЙрд▓рдо рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛
рдХреНрд░рдордмрджреНрдз рдХрд░рдХреЗ, рди рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдЧреИрд░-рд╕реНрдерд┐рд░рд╛рдВрдХ рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
(const) рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рдкрд╣рд▓реА рддрд╛рд▓рд┐рдХрд╛ рд╣реИ
EXPLAIN рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ, рдЬреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ, рдХреЙрдиреНрд╕реНрдЯ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреНрд░реВрдг рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред
...
===

ORDER BY рдХреЗ рд▓рд┐рдП, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЬрд┐рд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдП, рд╡рд╣ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд╣реЛред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЖрдк рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, mysql рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдХреНрд░рдо рдореЗрдВ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдирддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдпрджрд┐ рдЖрдк рдХреНрд╡реЗрд░реА рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдкрд╣рд▓реЗ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓рд╛ рд╣реЛрдЧрд╛ред

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, mysql рдЕрдиреБрдХреВрд▓рдХ рдХреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреНрд░рдо рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ STRAIGHT_JOIN рдХрдорд╛рдВрдб рдХреЛ рдЪрдпрди рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

STRAIGHT_JOIN рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ... рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ....... ORDER BY table.row

рдлреЛрд░рдо PHPBB3 рдХреЗ mysql рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рд▓рдЧрднрдЧ 300,000 рдкрджреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

SELECT t.*, p.*, u.username FROM phpbb3_topics as t, phpbb3_posts as p, phpbb3_users as u WHERE t.topic_replies>0 AND p.poster_id=u.user_id AND topic_first_post_id<>p.post_id AND topic_approved=1 AND p.topic_id=t.topic_id AND t.forum_id='16' AND p.post_id<'244103' ORDER by post_id desc LIMIT 40 


рдХреНрд╡реЗрд░реА рдиреЗ 12.2571 рд╕реЗрдХреЗрдВрдб рдХрд╛ рд╕рдордп рд▓рд┐рдпрд╛

рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рд╣рдо рднрдпрд╛рдирдХ рджреЗрдЦрддреЗ рд╣реИрдВ: рдЬрд╣рд╛рдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛; рдЕрд╕реНрдерд╛рдпреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛; рдлрд╛рдЗрд▓рд╕рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╣рдо рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ (рд░рд┐рдмреВрдЯрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдорд╛рдВрд╕рдкреЗрд╢реА рдХреИрд╢ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛):

 SELECT STRAIGHT_JOIN t.*, p.*, u.username FROM phpbb3_posts as p, phpbb3_topics as t, phpbb3_users as u WHERE t.topic_replies>0 AND p.poster_id=u.user_id AND topic_first_post_id<>p.post_id AND topic_approved=1 AND p.topic_id=t.topic_id AND t.forum_id='13' AND p.post_id<'234103' ORDER by post_id desc LIMIT 40 


рдХреНрд╡реЗрд░реА рдиреЗ 0.0447 рд╕реЗрдХреЗрдВрдб рд▓рд┐рдпрд╛

рд╕рдордЭрд╛рдиреЗ рдореЗрдВ: рдЬрд╣рд╛рдБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛;

рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдордЬрдмреВрд░ рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рд╕рд╛рде, рд╣рдордиреЗ рдХреНрд╡реЗрд░реА рдХреЛ 300 рдЧреБрдирд╛ рддреЗрдЬ рдХрд░ рджрд┐рдпрд╛!

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ STRAIGHT_JOIN рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдХреНрд░рдо рдХрд╛ рдЯреНрд░реИрдХ рд╕реНрд╡рдпрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

PS рдпрд╣ рдХреНрд╡реЗрд░реА Yandex рджреНрд╡рд╛рд░рд╛ phpbb рдордВрдЪреЛрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдкрд╣рд▓реЗ, рдпреИрдВрдбреЗрдХреНрд╕ -рдмреЙрдЯ рдиреЗ php.ru рд╕рд░реНрд╡рд░ рдХреЛ рд╣рд░ рд░рд╛рдд рдХрдИ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд░рдЦрд╛ (рд╕рд░реНрд╡рд░ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдирд╣реАрдВ рд╣реИ)ред рдпреИрдВрдбреЗрдХреНрд╕ рдмреНрд▓реЙрдЧ рдкрд░ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЪрд░реНрдЪрд╛ рд╣реБрдИ рдереА, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдирд┐рд░реНрдгрдп рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХреА рдЧрдИ рдереАред

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


All Articles