Serg@NT
Well-Known Member
- Регистрация
- 20.02.2010
- Сообщения
- 506
Тестировал на своём сайте время отображения страницы (простенький код в PHP, т.е. за сколько сервер генерирует всю страницу).
Есть 2 таблички MySQL (MyISAM) - статьи (примерно 2000 записей) и комментарии (примерно 1000 записей). На странице новостей показывается примерно 25 новостей: название, описание из статей и количество комментариев к каждой.
Когда-то давно, когда писал эту страницу, ещё не имея достаточного опыта, сделал это примитивно: выборка последних 25 статей и для каждой ещё по запросу - выборка количества комментариев ("SELECT COUNT(*) FROM comments ...") - в цикле while($articles = mysql_fetch_array($art)). Итого получается 26 однотабличных запросов к базе.
Сегодня решил "оптимизировать", сделав запрос к обоим таблицам сразу, в виде "SELECT a.*, COUNT(c.id) FROM articles a, comments с ...". То есть, чтобы и информация о статье, и о количестве комментариев выбиралась в одном запросе.
Однако, заметил, что из-за этого время генерации страницы резко возрасло. Было меньше секуны (0,3 - 0,5 сек), стало - 4 с лишним. Пришлось вернуться к предыдущей схеме. То же самое пробовал для архива новостей, где выдаётся по 100 новостей на страницу - та же фигня, даже время то же.
Я понимаю, что запросы к нескольким таблицам выполняются дольше, чем к одной, но не настолько же! Объясните, кто может.
Есть 2 таблички MySQL (MyISAM) - статьи (примерно 2000 записей) и комментарии (примерно 1000 записей). На странице новостей показывается примерно 25 новостей: название, описание из статей и количество комментариев к каждой.
Когда-то давно, когда писал эту страницу, ещё не имея достаточного опыта, сделал это примитивно: выборка последних 25 статей и для каждой ещё по запросу - выборка количества комментариев ("SELECT COUNT(*) FROM comments ...") - в цикле while($articles = mysql_fetch_array($art)). Итого получается 26 однотабличных запросов к базе.
Сегодня решил "оптимизировать", сделав запрос к обоим таблицам сразу, в виде "SELECT a.*, COUNT(c.id) FROM articles a, comments с ...". То есть, чтобы и информация о статье, и о количестве комментариев выбиралась в одном запросе.
Однако, заметил, что из-за этого время генерации страницы резко возрасло. Было меньше секуны (0,3 - 0,5 сек), стало - 4 с лишним. Пришлось вернуться к предыдущей схеме. То же самое пробовал для архива новостей, где выдаётся по 100 новостей на страницу - та же фигня, даже время то же.
Я понимаю, что запросы к нескольким таблицам выполняются дольше, чем к одной, но не настолько же! Объясните, кто может.