Changes between Version 41 and Version 42 of QueryOptimization


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

--

Legend:

Unmodified
Added
Removed
Modified
  • QueryOptimization

    v41 v42  
    646646}}}
    647647
     648==== Без индекс:
     649
     650 * '''SELECT'''
     651
     652{{{
     653
     654EXPLAIN ANALYZE
     655    SELECT * FROM "Future_Events"
     656    WHERE venue_id = 1;
     657
     658}}}
     659
     660 * '''INSERT'''
     661
     662{{{
     663
     664EXPLAIN ANALYZE
     665    INSERT INTO "Event_Happening" (event_happening_id, event_id, venue_id, event_time, duration)
     666    VALUES ((SELECT MAX(event_happening_id) + 1 FROM "Event_Happening"), 1, 1, '2026-12-31 20:00:00', 120);
     667
     668}}}
     669
     670 * '''UPDATE'''
     671
     672{{{
     673
     674EXPLAIN ANALYZE
     675    UPDATE "Event_Happening"
     676    SET event_time = '2027-01-01 21:00:00'
     677    WHERE event_happening_id = (SELECT MAX(event_happening_id) FROM "Event_Happening");
     678
     679}}}
     680
     681Времето на извршување е релативно ниско, но базата троши 4.258 ms само на планирање на секој поединечен запис. Бидејќи редовите не се подредени по време, системот мора да врши постојани споредби за секој настан. Заради ова, потребен е индекс кој ќе овозможи моментално лоцирање на идните настани без пребарување на целата табела.
     682
    648683==== Оптимизација:
    649684
     
    658693-- composite index to optimize queries filtering both by venue and upcoming time slots
    659694CREATE INDEX idx_event_happening_venue_time ON "Event_Happening"(venue_id, event_time);
     695
     696}}}
     697
     698==== Со индекс:
     699
     700 * '''SELECT'''
     701
     702{{{
     703
     704EXPLAIN ANALYZE
     705    SELECT * FROM "Future_Events"
     706    WHERE venue_id = 1;
     707
     708}}}
     709
     710 * '''INSERT'''
     711
     712{{{
     713
     714EXPLAIN ANALYZE
     715    INSERT INTO "Event_Happening" (event_happening_id, event_id, venue_id, event_time, duration)
     716    VALUES ((SELECT MAX(event_happening_id) + 1 FROM "Event_Happening"), 1, 1, '2026-11-15 19:00:00', 90);
     717
     718}}}
     719
     720 * '''UPDATE'''
     721
     722{{{
     723
     724EXPLAIN ANALYZE
     725    UPDATE "Event_Happening"
     726    SET event_time = '2026-11-20 20:00:00'
     727    WHERE event_happening_id = (SELECT MAX(event_happening_id) FROM "Event_Happening");
    660728
    661729}}}