Положил сервер? Запрос виноват🤥

Есть в аналитике момент, который объединяет всех: 🤝 написал запрос, нажал “выполнить” - и всё. Сервер лёг. 🥱 Коллеги пишут в чат “кто уронил базу?”, а ты сидишь и делаешь вид, что ты тут ни при чём. Хотя это ты. Это всегда ты.🫡 И самое смешное - запрос-то был простой. Ну, казалось бы. Просто выгрузить данные. Просто соединить пару таблиц. Просто посчитать метрику. А потом выясняется, что ты джойнишь таблицу на 10 миллионов строк с таблицей на 20 миллионов без индекса. И всё, привет. Поэтому вот вам пара правил, которые спасут вас от позора: - Сначала explain, потом выполнение. Посмотри план запроса. Если там full scan на огромной таблице - остановись. Подумай. - Не джойни всё со всем. Если можно обойтись без лишнего соединения - обойдись. Каждый джойн - это время и ресурсы. - Фильтруй как можно раньше. Не тащи все данные, чтобы потом отфильтровать. Ставь условия сразу, где можно. - Ограничивай выборку. Если тебе нужны первые 100 строк - так и пиши. Не надо тянуть всё. - Индексы - твои друзья. Если ты часто ищешь по какому-то полю - убедись, что там есть индекс. - Тестируй на маленьком куске. Сначала прогони на ограниченной выборке. Убедись, что логика верная. Потом запускай на всём. И главное правило: если ты не уверен, что твой запрос безопасен - не запускай его на проде. Лучше перебдеть, чем потом объяснять, почему база лежала час. Так что если вы сегодня снова чуть не положили сервер - не переживайте. Мы все через это проходили. Просто в следующий раз сделайте explain. И всё будет хорошо. А вы уже роняли базу своим запросом? Признавайтесь 👇

Положил сервер? Запрос виноват🤥 | Сетка — социальная сеть от hh.ru Положил сервер? Запрос виноват🤥 | Сетка — социальная сеть от hh.ru