roma-dev
@roma-dev
Сеошник - программист

Какие запросы к бд mysql можно считать быстрыми и какие медленными?

Всем добра!
В моей бд есть две таблицы категорий и подкатегорий.
Категорий 255 записей. У каждой категории по 30 подкатегорий. Подкатегорий 7650.
Подкатегории связанны с категориями внешним ключом.

Выполняю следующий запрос:
select * from `categories`, `subcategories` where `categories`.`id` = `subcategories`.`category_id`;
Время выполнения:
7650 rows in set (0.06 sec)
В логе время такое:
Query_time: 0.056264 Lock_time: 0.000085 Rows_sent: 7650 Rows_examined: 7905

Меня терзают смутные сомнения по поводу этой (0.06 sec) информации.
Когда в консоли показывает 0.06 сек - это 6 сотых секунды или 6 секунд?

И второй вопрос: Какие запросы можно считать нормальными по времени и какие недопустимо медленными для вебсайта?
  • Вопрос задан
  • 840 просмотров
Пригласить эксперта
Ответы на вопрос 3
gobananas
@gobananas
finishhim.ru
1. Это 6 сотых секунды
2. В целом всё что меньше 0,1 это ок, дальше можно волноваться, но если у вас в базе миллионы записей то и 0,5 может быть ок

Есть возможность в настройках mysql включить лог медленных запросов, установить лимит времени, например 1 секунда и все запросы, выполняющиеся дольше этого значения попадут в лог.
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
Какие запросы к бд mysql можно считать быстрыми и какие медленными?

Быстрые это те, время обработки которых не мешает пользователю/бизнесу/всем_причастным.
Медленные - это соответственно те, которые мешают.

0.06 sec в консоли - это 6 сотых секунды, конечно.

Для веба значение имеет время рендеринга страницы пользователю. Хороший результат для backend'а - это 0,2 секунды на генерацию страницы. Это включая всё время обращений к кешам, базам данных и прочую логику построения страницы.
Ответ написан
Комментировать
@InoMono
При грамотно построенной структуре БД, грамотных индексах и грамотном запросе - собственно выполнение запроса осуществляется за доли секунды, да.

А вот получение отобранных данных, а тем более отправка этих данных, в например, браузер на другом конце света - долго.

Поэтому в вашем конкретном запрос - есть еще много чего для оптимизации по скорости.

Ну вот скажите мне, пожалуйста, зачем вам СЕМЬ ТЫСЯЧ строк?
Ведь скорее всего это какое-то интерактивное взаимодействие с пользователем, типа веб-сайта.
Он никогда не будет листать эти 7000. Хорошо еще, если первые 50 просмотрит.
Даже если вы хотите угодить дотошному пользователю, который долистывает до последней страницы - вряд ли целесообразно извлекать из БД более 200-1500 записей.
Так зачем вам мучать сервер данными, которые никому никогда не покажите.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы