Simulative – Telegram
7.39K subscribers
1.7K photos
70 videos
1 file
1.26K links
Привет! Мы — образовательная платформа в сфере аналитики Simulative: simulative.ru

Создаём курсы-симуляторы, где обучаем не на «апельсинках», а на кейсах из реального бизнеса.

Наш уютный чат: @itresume_chat
Поддержка: @simulative_support
Download Telegram
💉 Как программисту быть здоровым? 🤨

Сегодня, в Международный День Здоровья, мы решили особое внимание уделить не только правилам программирования, но и правилам заботы о cвоем здоровье. Программист, между прочим, - довольно опасная профессия!

Подробно ознакомьтесь с советами, которые мы для Вас подготовили, чтобы избежать многих неприятных недугов! 😉

Полезного чтения 😊

P.S. Имеются противопоказания. Перед применением посоветуйтесь с тим лидом.

#itresume
​​Рубрика «Вопросы с собеседований» 💥

Оператор EXPLAIN для оптимизации SQL-запросов

Ответ:

При выполнении SQL запроса система пытается «найти» оптимальный способ выполнения этого запроса. Посмотреть итоговый план выполнения Вы можете с помощью ключевого слова EXPLAIN.

1. КАК ИСПОЛЬЗОВАТЬ

Использовать оператор EXPLAIN очень просто - достаточно добавить его перед основным запросом. Например:

  EXPLAIN SELECT * from table t

2. ВЫВОД КОМАНДЫ

Результатом работы EXPLAIN в MySQL будет 10 полей (значения взяты для примера):

  id: 1
select_type: SIMPLE
table: categories
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 4
Extra:
1 row in set (0.00 sec)

Давайте разберем каждое из этих полей.

Id – порядковый номер для каждого SELECT’а внутри запроса (когда имеется несколько подзапросов)

Select_type – тип запроса SELECT (SIMPLE - без подзапросов и UNION, PRIMARY - внешний запрос в джоине, DERIVED - часть подзапроса в FROM, SUBQUERY - первый SELECT в подзапросе и так далее).

Table – таблица, к которой относится выводимая строка

Type — указывает на то, как MySQL связывает используемые таблицы (System – таблица имеет только одну строку, Eq_ref – все части индекса используются для связывания, All – для нахождения соответствующих строк используются сканирование всей таблицы и так далее). Именно в этом поле заложена пища для размышлений - здесь можно выявить слабое место.

Possible_keys – показывает индексы, которые могут быть использованы для нахождения строк в таблице.

Key– указывает на использованный индекс.

Key_len – длина индекса, которую оптимизатор MySQL выбрал для использования.

Ref – указываются столбцы или константы, которые сравниваются с индексом, указанным в поле key.

Rows – отображает число записей, обработанных для получения выходных данных. Еще одна «точка роста» - тут Вы можете понять, как стоить поработать над Вашими джоинами и фильтрами.

Extra – содержит дополнительную информацию, относящуюся к плану выполнения запроса.

3. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ

После EXPLAIN в запросе вы можете использовать ключевое слово EXTENDED и MySQL покажет вам дополнительную информацию о том, как выполняется запрос.

Чтобы увидеть эту информацию, вам нужно сразу после запроса с EXTENDED выполнить запрос SHOW WARNINGS. Наиболее полезно смотреть эту информацию о запросе, который выполнялся после каких-либо изменений сделанных оптимизатором запросов.


4. ДОКУМЕНТАЦИЯ

С полной информацией Вы можете ознакомиться в официальной документации MySQL (там все понятно написано и проиллюстрировано примерами) 👉🏻 http://bit.ly/3wCaBpi

Еще один полезный источник (еще и на русском языке!) - документация Postgres Pro 👉🏻 http://bit.ly/3utX6WT


#interview_problems #sql
💥 Глаголы R vs Операторы SQL 💪🏻

Как лучше работать с таблицами: с помощью R или SQL? Отвечаем - оба языка хороши!

Вместе с R4marketing проводим параллель между синтаксисом R и SQL, чтобы Вам было проще освоиться!

В карточках разбираем основные функции, библиотеки и инструменты для ловкой манипуляции данными 🤤

#sql #rstat #cheatsheet
🔥1
​​GROK IT!

Задача по R: Какой вспомогательной функции нет в глаголе dplyr::select?

Правильный ответ раскроем завтра 😏

#grokit
Какой вспомогательной функции нет в глаголе dplyr::select?
Anonymous Quiz
37%
everything()
16%
one_of()
26%
num_range()
21%
equals()