METANIT.COM
6.21K subscribers
1.79K photos
86 videos
10 files
1.26K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Шпаргалка по базовому SQL #sql
9🔥3🥰1
Как происходит выполнение SQL-запроса в базе данных #sql
🔥11👍4🏆1
Нормальные формы баз данных #sql #database
🔥15🥰1👏1
Команды SQL для работы с таблицами и базами данных #sql
13👍8🔥2❤‍🔥1
Типы ключей базы данных #sql
🔥6🥰1👏1
Роудмап для изучения баз данных
#database #sql
👍15🔥4😱2
Шпаргалка по основным команда SQL по категориям #sql
🤓8🔥1🥰1
Сравнение операций в Excel, SQL и Python (Pandas)
#sql #python
🔥8💩4🤣2🥰1👏1
Добавил мобильную версию руководства по языку SQL и работе с базами данных на примере SQL Server
https://www.rustore.ru/catalog/app/com.metanit.sql_tutorial
#sql #database
🔥16🤮32🥰1👏1
Большая шпаргалка по SQL #sql
17👌9👏1
Как происходят SQL-инъекции #sql
🔥9
20 распространенных рекомендаций по оптимизации SQL-запросов:

1. Индексы для шаблонов доступа к запросам (составные, селективные, покрывающие); не ориентируйтесь на количество строк; поддерживайте актуальность статистики.

2. Используйте EXISTS для проверки наличия записей; применяйте COUNT(*) только когда действительно нужен подсчёт.

3. Выбирайте конкретные столбцы явно; избегайте SELECT * для сокращения операций ввода-вывода и использования покрывающих индексов.

4. Предпочитайте SARG-предикаты (предикаты, допускающие использование индекса); переписывайте медленные коррелированные подзапросы с помощью JOIN/EXISTS.

5. Избегайте DISTINCT как временного решения; исправьте соединения/ключи; используйте его только когда действительно требуется удаление дубликатов.

6. Фильтрацию выполняйте в WHERE; резервируйте HAVING только для фильтрации после агрегации.

7. Используйте явные JOIN ... ON; избегайте неявных соединений в WHERE.

8. Применяйте пагинацию по ключам; избегайте OFFSET/LIMIT на больших наборах данных; для выборки используйте TABLESAMPLE (если доступно).

9. Используйте UNION ALL вместо UNION, когда дубликаты допустимы.

10. Заменяйте широкие OR-предикаты на UNION ALL только когда каждая ветвь может использовать разные индексы.

11. Планируйте выполнение тяжёлых запросов в периоды низкой нагрузки; применяйте ограничения ресурсов/очереди, если они доступны.

12. Избегайте OR в предикатах соединения; используйте вычисляемые столбцы или UNION ALL, когда это позволяет использовать поиск по индексу.

13. Используйте GROUP BY, когда нужны сгруппированные строки; применяйте оконные функции, когда требуется детализация строк с агрегатами.

14. Используйте производные/временные таблицы, когда они сокращают объём работы или добавляют статистику; остерегайтесь блокирующих спусков.

15. При массовой загрузке: отключайте/удаляйте некластерные индексы, выполняйте пакетную вставку, затем восстанавливайте; сохраняйте PK/кластерные индексы, когда это полезно.

16. Используйте материализованные представления для медленно меняющихся, ресурсоёмких агрегатов; планируйте обновление/недействительность.

17. Избегайте не-SARG-сравнений (например, <>) на столбцах с низкой селективностью; переписывайте в диапазоны, когда это возможно.

18. Минимизируйте коррелированные подзапросы над большими наборами; предпочитайте множественные соединения/EXISTS.

19. Выбирайте INNER вместо LEFT/RIGHT по семантике; INNER часто работает лучше, когда применимо.

20. Кешируйте повторяющиеся наборы результатов: временные таблицы (на сессию), кеш результатов или материализованные представления, с правилами актуальности.

#sql
12🎄4👍3🔥3
Фантомные чтения
(подробное описание в следующем посте)

#sql #mysql #postgresql #database