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 секунд?

И второй вопрос: Какие запросы можно считать нормальными по времени и какие недопустимо медленными для вебсайта?
  • Вопрос задан
  • 843 просмотра
Пригласить эксперта
Ответы на вопрос 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 записей.
Так зачем вам мучать сервер данными, которые никому никогда не покажите.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
11 мая 2024, в 00:19
1000 руб./за проект
10 мая 2024, в 23:51
30000 руб./за проект
10 мая 2024, в 23:33
2500 руб./за проект