Optymalizacja zapytania w PostgreSQL

0

Witam,
Mam następujące zapytanie w postgresie:

SELECT
    pr.id_product_recv, pr.num_recv, pr.datetime,
        p.name AS product_name,
        c.name AS category_name,
    u.id_user, u.name, u.surname
FROM product_recv pr
    INNER JOIN product p ON p.id_product = pr.id_product
    INNER JOIN username u ON u.id_user = pr.id_user
    INNER JOIN category c ON c.id_category = p.id_category
WHERE
    pr.datetime IN (
        SELECT MAX(datetime) AS last_date FROM product_recv
    );

Jego plan zapytania jest następujący:

"Nested Loop  (cost=10300.92..20664.44 rows=1 width=96)"
"  ->  Nested Loop  (cost=10300.78..20664.26 rows=1 width=83)"
"        ->  Nested Loop  (cost=10300.36..20660.20 rows=1 width=52)"
"              ->  Hash Semi Join  (cost=10300.07..20659.88 rows=1 width=40)"
"                    Hash Cond: (pr.datetime = (max(product_recv.datetime)))"
"                    ->  Seq Scan on product_recv pr  (cost=0.00..9104.83 rows=478083 width=40)"
"                    ->  Hash  (cost=10300.06..10300.06 rows=1 width=8)"
"                          ->  Aggregate  (cost=10300.04..10300.05 rows=1 width=8)"
"                                ->  Seq Scan on product_recv  (cost=0.00..9104.83 rows=478083 width=8)"
"              ->  Index Scan using id_product on product p  (cost=0.29..0.31 rows=1 width=28)"
"                    Index Cond: (id_product = pr.id_product)"
"        ->  Index Scan using id_user on username u  (cost=0.42..4.05 rows=1 width=39)"
"              Index Cond: (id_user = pr.id_user)"
"  ->  Index Scan using id_category on category c  (cost=0.14..0.16 rows=1 width=29)"
"        Index Cond: (id_category = p.id_category)"

Jestem początkujący w zakresie optymalizacji. Zastanawiam się w jaki sposób mógłbym przyspieszyć to zapytanie? Będę wdzięczny za podpowiedź. Obecny czas wykonania to 140ms.

Czy to zapytanie można sensownie przyspieszyć? Jest to na cel czysto dydaktyczny.

Pozdrawiam,

0

Utworzenie indeksu na pr.datetime przyspieszylo zapytanie do 11ms.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0