SQL Portal | Базы Данных
14.4K subscribers
610 photos
83 videos
41 files
505 links
Присоединяйтесь к нашему каналу и погрузитесь в мир баз данных

Связь: @devmangx

РКН: https://clck.ru/3H4Wo3
Download Telegram
Вот список 20 техник оптимизации SQL-запросов, которые я считаю достойными внимания:

1. Создавайте индекс на больших таблицах (>1.000.000 строк)
2. Используйте EXIST() вместо COUNT() для поиска элемента в таблице
3. Используйте SELECT с перечислением полей вместо SELECT *
4. Избегайте подзапросов в WHERE-условии
5. Избегайте SELECT DISTINCT, если это возможно
6. Используйте WHERE вместо HAVING
7. Создавайте соединения с помощью INNER JOIN (а не через WHERE)
8. Используйте LIMIT для выборки результатов
9. Используйте UNION ALL вместо UNION, где это возможно
10. Используйте UNION вместо конструкции WHERE ... OR ...
11. Запускайте запросы в непиковые часы
12. Избегайте использования OR в соединениях
13. Выбирайте GROUP BY вместо оконных функций
14. Используйте производные и временные таблицы
15. Удаляйте индекс перед загрузкой большого объема данных
16. Используйте материализованные представления вместо обычных
17. Избегайте оператора != или <> (не равно)
18. Минимизируйте количество подзапросов
19. Используйте INNER JOIN как можно реже, если можно получить тот же результат с LEFT/RIGHT JOIN
20. Чаще используйте временные источники для получения того же набора данных


👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥1😁1🤯1
Шпаргалка по SQL для пользователей SQL Server

1. Типы данных:

Точные числа: int, decimal, money, и т. д.
Приблизительные числа: float, real
Дата и время: datetime, timestamp
Строки char, varchar, text и Unicode версии

2. Функции работы с датой: GETDATE(), YEAR(), DATEADD(), DATEDIFF() и др.

3. Функции работы со строками: LEN(), LEFT(), RIGHT(), REPLACE(), SUBSTRING(), UPPER(), LOWER()

4. Математические функции: ABS(), ROUND(), CEILING(), FLOOR(), POWER(), SQRT()

5. Агрегатные функции: SUM(), AVG(), MAX(), MIN(), COUNT()

6. Создание объектов базы данных:

Хранимые процедуры: CREATE PROCEDURE
Триггеры: CREATE TRIGGER
Представления (view): CREATE VIEW
Индексы: CREATE INDEX
Функции: CREATE FUNCTION

7. Конвертация типов: CAST(), CONVERT()

8. Ранжирование и оконные функции: RANK(), DENSE_RANK(), ROW_NUMBER()

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍3
Задача с LeetCode — «Second Highest Salary»

Найти вторую по величине зарплату из таблицы Employee. Если такой нет — вернуть NULL

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Если ты новичок в SQL — это просто находка

Это сайт, который анимирует выполнение SQL-запросов.

Ты вставляешь SQL, жмёшь visualize — и видишь, как твой запрос "оживает": шаг за шагом показывает, как SELECT вытягивает данные, как JOIN соединяет таблицы, как фильтруются строки и т.д.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥7
PostgreSQL добавил поддержку Row-Level Security (RLS) ещё в 2016 году

Но большинство команд до сих пор её не включают.

А ведь это поразительно — потому что Postgres уже давно является основой для:

• Мультиарендных SaaS-приложений
• Встроенной аналитики
• Бэкендов для мобильных приложений

Он ACID-совместим. Надёжен как скала. Идеально подходит для транзакционных нагрузок.

Но с включённым RLS Postgres становится ещё и уровнем управления доступом.

Представим, что вы разрабатываете мультиарендную CRM:

1. Все данные клиентов хранятся в одной таблице
2. Пользователь должен видеть только свои записи
3. Вы добавляете WHERE tenant_id = ? в каждый запрос

А потом кто-то забывает добавить это условие.
Бах! Утечка данных. Классическая ошибка контроля доступа. 🔨

С RLS:

Вы один раз объявляете политику
Устанавливаете tenant_id при подключении
Выполняете запросы без забот о фильтрации по tenant_id

Теперь база сама принудительно применяет правила. Даже "плохие" запросы подчиняются политике, заданной на уровне СУБД — риск случайной утечки минимален.

Это подходит для:

• SaaS-бэкендов
• Аналитики на общих данных
• Внутренних инструментов

Везде, где нужен доступ на уровне строк без переписывания запросов.

Если вы полностью полагаетесь на проверки доступа на уровне приложения — подумайте о переносе части этой ответственности в СУБД с помощью RLS. Это и безопаснее, и проще. 🤨

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4
Топ 5+ задач на собеседование по SQL

1. Базы данных – ссылка
2. SQL-запросы – ссылка
3. MSSQL – ссылка
4. MySQL – ссылка
5. PostgreSQL – ссылка
6. Oracle – ссылка

👉 Больше задач тут: ссылка

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Использование привязанных переменных — ключ к быстрой работе приложений

Пишите SQL вот так:

'SELECT ... WHERE col = ' || var


Каждое новое значение VAR создаёт новый запрос ⇒ много разборов ⇒ медленно

Используйте привязку вот так:

'SELECT ... WHERE col = :bind'


Один и тот же запрос для любого значения ⇒ один разбор ⇒ быстро

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥31
Внутренняя архитектура PostgreSQL

1. Архитектура на основе процессов
PostgreSQL использует архитектуру «один процесс на соединение», то есть для каждого клиента создаётся отдельный процесс операционной системы.

2. Журнал предзаписи
PostgreSQL применяет WAL для обеспечения надёжности данных, согласованности, восстановления после сбоев и репликации

3. Многоверсионность и управление параллелизмом
Благодаря MVCC PostgreSQL позволяет выполнять параллельные транзакции без необходимости жёсткой блокировки данных

4. Конвейер выполнения запросов
Запросы в PostgreSQL проходят через чёткую последовательность этапов: разбор, планирование, исполнение и возврат результатов

5. Система индексации
PostgreSQL поддерживает множество типов индексов (B-Tree, GIN, GiST, BRIN и др.) для оптимизации запросов под разные типы данных

6. Партиционирование таблиц
PostgreSQL позволяет разбивать большие таблицы на более мелкие части (партиции) по диапазону значений, списку или хешу, что упрощает управление и ускоряет обработку.

7. Логическая декодировка
Позволяет транслировать изменения из WAL в логическом формате, что полезно для репликации и систем отслеживания изменений (CDC).

8. Расширения
PostgreSQL построен как модульная система и поддерживает расширения, которые позволяют добавлять новые функции и возможности.

9. Сбор статистики
Механизм сбора статистики PostgreSQL отслеживает активность в реальном времени, что помогает анализировать и оптимизировать производительность базы данных


👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6
О векторных базах данных простым языком

📖 Читать: ссылка

👉 @SQLPortal | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥5
Когда ты пишешь SQL-запрос, порядок команд вроде бы логичен SELECT, FROM, WHERE и тд. Но база данных выполняет их в другом порядке 😄

Настоящая последовательность выполнения 👇

FROM
JOIN
ON
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
LIMIT


💡 Поэтому WHERE не может использовать SUM() — он идёт до агрегации. А HAVING — можно

На фото слева. то в каком порядке мы обычно пишем SQL-запрос, а справа как реально работает база данных под капотом. Запомни эту логику, и ты избежишь кучи ошибок в SQL-запросах

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥7🤯3👀1
Эта фишка спасёт, когда ты не понимаешь, куда делись строки

Если ты этого не знал — сохраняй

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍173🔥2
Обязательно загляни на DB-Engines.com – это своего рода “топ-чарт” самых популярных СУБД в мире

Ежемесячный рейтинг, который показывает, насколько популярна каждая СУБД по таким параметрам, как: количество упоминаний в интернете, наличие вакансий с упоминанием СУБД, активность на Stack Overflow и тд.

На апрель 2025 в топе:

🍩Oracle
🍩MySQL
🍩Microsoft SQL Server

Этот рейтинг — не о том, какая СУБД «лучшая», а о том, какие технологии чаще используются, обсуждаются и востребованы на рынке

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112🔥1
Как оптимизировать большие таблицы в SQL

📖 Читать: ссылка

👉 @SQLPortal | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74
Понимание типов баз данных

Чтобы принимать наилучшие решения для наших проектов, важно понимать различные типы баз данных, доступные на рынке. Необходимо учитывать ключевые характеристики каждого типа, популярные варианты, а также сравнивать их области применения 😁

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Хочешь выучить SQL с нуля за вечер? шутка 👏

Но всё же держи отличный интерактивный сайт — sqlteaching.com

Здесь ты освоишь основы SQL без лишней теории, без регистрации, всё по шагам

Вот прям идеален для начинающих и тех, кто просто забыл синтаксис

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍3🔥2
SQL-трюк, который знают не все: QUALIFY

Если работаешь с оконными функциями —> забудь про лишние подзапросы
QUALIFY позволяет фильтровать строки прямо после оконной функции

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10😁43
Шпаргалка по SQL на русском!

Нашёл крутой репозиторий: ILYA-NASA/MySQL —> коротко, по делу и без лишней воды

Рекомендую сохранить себе и влепить лайк 💪

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16😁2