Встречается на собеседованиях • сегодня

Какие знаешь способы декомпозиции запроса в PostgreSQL

В PostgreSQL есть несколько способов декомпозиции запросов:

  1. Подзапросы (Subqueries)
    Вложенные SELECT-запросы в WHERE, FROM или SELECT.

    sql
    SELECT name FROM users WHERE id IN (SELECT user_id FROM orders);
  2. CTE (Common Table Expressions)
    Временные результаты с WITH. Улучшают читаемость и поддерживают рекурсию.

    sql
    WITH user_orders AS (
        SELECT user_id FROM orders WHERE amount > 100
    )
    SELECT name FROM users WHERE id IN (SELECT user_id FROM user_orders);
  1. Временные таблицы
    Создаются на время сессии, полезны для сложных операций.

    sql
    CREATE TEMP TABLE temp_orders AS SELECT * FROM orders WHERE date > NOW() - INTERVAL '1 month';
    SELECT * FROM temp_orders;
  2. Функции (PL/pgSQL)
    Кастомные функции для инкапсуляции логики.

    sql
    CREATE FUNCTION get_active_users() RETURNS SETOF users AS $$
    BEGIN
        RETURN QUERY SELECT * FROM users WHERE last_login > NOW() - INTERVAL '30 days';
    END;
    $$ LANGUAGE plpgsql;
  3. Разделение на несколько запросов
    Выполнение поэтапно на стороне приложения (например, в Java через JDBC).

Выбор зависит от сложности, производительности и требований к читаемости.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы