Changes between Version 38 and Version 39 of QueryOptimization


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

--

Legend:

Unmodified
Added
Removed
Modified
  • QueryOptimization

    v38 v39  
    333333}}}
    334334
     335==== Без индекс:
     336
     337 * '''SELECT'''
     338
     339{{{
     340
     341EXPLAIN ANALYZE
     342    SELECT * FROM "Event_User_Ratings"
     343    WHERE user_id = 1;
     344
     345}}}
     346
     347 * '''INSERT'''
     348
     349{{{
     350
     351EXPLAIN ANALYZE
     352    INSERT INTO "Event_Happening_Rating" (rating_id, event_happening_id, user_id, rating, comment)
     353    SELECT COALESCE(MAX(rating_id), 0) + 1, 1, 1, 5, 'Test rating'
     354    FROM "Event_Happening_Rating";
     355
     356}}}
     357
     358 * '''UPDATE'''
     359
     360{{{
     361
     362EXPLAIN ANALYZE
     363    UPDATE "Event_Happening_Rating"
     364    SET rating = 4, comment = 'New test rating'
     365    WHERE event_happening_id = 1 AND user_id = 1;
     366
     367}}}
     368
     369Без индекси, секое пребарување на оценките по корисник предизвикува непотребно оптоварување на меморијата преку Seq Scan. Индексирањето на user_id и event_happening_id обезбедува брза филтрација и поврзување на рејтинзите со соодветните термини на настаните.
     370
    335371==== Оптимизација:
    336372
     
    342378-- index for linking ratings to users
    343379CREATE INDEX idx_ehr_user_id ON "Event_Happening_Rating"(user_id);
     380
     381}}}
     382
     383==== Со индекс:
     384
     385 * '''SELECT'''
     386
     387{{{
     388
     389EXPLAIN ANALYZE
     390    SELECT * FROM "Event_User_Ratings" WHERE user_id = 1;
     391
     392}}}
     393
     394 * '''INSERT'''
     395
     396{{{
     397
     398EXPLAIN ANALYZE
     399    INSERT INTO "Event_Happening_Rating" (rating_id, event_happening_id, user_id, rating, comment)
     400    SELECT COALESCE(MAX(rating_id), 0) + 1, 2, 1, 5, 'Test rating'
     401    FROM "Event_Happening_Rating";
     402
     403}}}
     404
     405 * '''UPDATE'''
     406
     407{{{
     408
     409EXPLAIN ANALYZE
     410    UPDATE "Event_Happening_Rating"
     411    SET rating = 6, comment = 'New test rating'
     412    WHERE event_happening_id = 1 AND user_id = 2;
    344413
    345414}}}