| |||
|
|
Mysql задолбало это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2020/11/21 Сервер lleo.me время от времени подтормаживает, в основном из-за Mysql. Я уже чинил всякие запросы, индексы. Вчера я страницу https://lleo.me/dnevnik/comm сильно доработал по вашим просьбам, теперь там видно, на чей коммент кто отвечал, а если на ваш, то еще и красным показывает. При этом заметил: если нажимаю ссылку «предыдущие комменты», то сервер подвисает в половине случаев уж точно. Стал разбираться и увидел сложную конструкцию. Ну, как сложную... Сильно упрощая, выглядит так: SELECT c.*,u.*,z.* FROM `comments` AS c JOIN `publications` AS z ON c.`num`=z.`n LEFT JOIN `users` AS u ON c.`user`=u.`us WHERE 1 AND c.`Time`<'1605909120' ORDER B
Не понимаю, почему Mysql с этим нехитрым на мой взгляд вопросом так туго справляется. Короче, я психанул и сделал вместо этой конструкции просто три разных запроса. Сперва вынимаю 50 комментариев, затем информацию об их заметках (обычно 50 комментариев относятся к двум последним заметкам), затем инфо об авторах (авторов тоже раза в четыре меньше, чем комментариев). И внезапно тормозить перестало! Либо я был неверного мнения о способностях Mysql оптимизировать запросы, либо запрос был как-то совсем неверно написан с точки зрения Mysql, и выполнять оно начинало его с другого конца, производя миллиард обратных сравнений по дате комментария. Сейчас я и процедуру комментов под заметкой так же переделал — там, правда, стыковались не все три базы, а всего две (информация о заметке и так известна), и работа выполнялась не с каждым посетителем, а густо кэшировалась в memcache (в отличие от страницы /comm, изначально предполагалось, что я туда хожу один). В общем, тоже сделал два запроса. Если будут глюки — пишите lleo@lleo.me это перепост заметки, оригинал находится на моем сайте: https://lleo.me/dnevnik/2020/11/21 Добавить комментарий: |
|||||||||||||