Changes between Version 39 and Version 40 of QueryOptimization


Ignore:
Timestamp:
05/09/26 21:18:50 (2 weeks ago)
Author:
231027
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • QueryOptimization

    v39 v40  
    435435}}}
    436436
     437==== Без индекс:
     438
     439 * '''SELECT'''
     440
     441{{{
     442
     443EXPLAIN ANALYZE
     444    SELECT * FROM "Event_Overall_Ratings" WHERE event_id = 1;
     445
     446}}}
     447
     448 * '''INSERT'''
     449
     450{{{
     451
     452EXPLAIN ANALYZE
     453    INSERT INTO "Event_Happening_Rating" (rating_id, event_happening_id, user_id, rating, comment)
     454    SELECT COALESCE(MAX(rating_id), 0) + 1, 1, 15, 9, 'Test rating'
     455    FROM "Event_Happening_Rating";
     456
     457}}}
     458
     459 * '''UPDATE'''
     460
     461{{{
     462
     463EXPLAIN ANALYZE
     464    UPDATE "Event_Happening_Rating"
     465    SET rating = 8, comment = 'New test rating'
     466    WHERE event_happening_id = 1 AND user_id = 15;
     467
     468}}}
     469
     470Пресметката на просечни оценки бара постојано агрегирање на податоци, што е бавно при секој нов приказ. Композитен индекс на (event_happening_id, rating) овозможува математичките операции да се вршат директно врз индексот, забрзувајќи го приказот на почетната страна.
     471
    437472==== Оптимизација:
    438473
     
    441476-- composite index to speed up grouping and aggregate calculations (AVG, COUNT)
    442477CREATE INDEX idx_ehr_happening_id_rating ON "Event_Happening_Rating"(event_happening_id, rating);
     478
     479}}}
     480
     481==== Со индекс:
     482
     483 * '''SELECT'''
     484
     485{{{
     486
     487EXPLAIN ANALYZE
     488    SELECT * FROM "Event_Overall_Ratings" WHERE event_id = 1;
     489
     490}}}
     491
     492 * '''INSERT'''
     493
     494{{{
     495
     496EXPLAIN ANALYZE
     497    INSERT INTO "Event_Happening_Rating" (rating_id, event_happening_id, user_id, rating, comment)
     498    SELECT COALESCE(MAX(rating_id), 0) + 1, 1, 20, 7, 'Test rating'
     499    FROM "Event_Happening_Rating";
     500
     501}}}
     502
     503 * '''UPDATE'''
     504
     505{{{
     506
     507EXPLAIN ANALYZE
     508    UPDATE "Event_Happening_Rating"
     509    SET rating = 8, comment = 'New test rating'
     510    WHERE event_happening_id = 1 AND user_id = 15;
    443511
    444512}}}