Changes between Version 63 and Version 64 of QueryOptimization


Ignore:
Timestamp:
05/17/26 13:37:42 (10 days ago)
Author:
231027
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • QueryOptimization

    v63 v64  
    663663}}}
    664664
    665 ==== Без индекс:
     665==== 1. Примарен филтер:
     666
     667Примарен филтер за овој поглед е `user_id`, бидејќи најчесто корисниците сакаат да ги видат сопствените претходни оценки и коментари. Секундарен филтер е `event_happening_id`, кога администраторот сака да ги види сите рецензии за конкретен термин на настан.
     668
     669==== 2. Случај на употреба:
     670
     671Погледот се користи во делот на корисничкиот профил (историја на рецензии) и на страната на самиот настан за приказ на рецензии од други корисници. Ова влијае на довербата на потенцијалните купувачи и на транспарентноста на платформата.
     672
     673==== 3. Иницијално време:
     674
     675Иницијалното време за извршување е многу ниско (0.187ms). Ова се должи на фактот што табелата `Event_Happening_Rating` е релативно мала (околу 17,800 редови), па базата може многу брзо да ја процесира дури и без екстремна оптимизација.
     676
     677==== 4. Анализа на планот на извршување (без индекси):
     678
     679Иако времето е мало, планот без индекси покажува дека базата веќе користи некои постоечки индекси (`idx_ehr_user_id`).
     680
     681При '''UPDATE''' операцијата, базата користи '''Index Scan''', што значи дека веќе постои ефикасна патека за пронаоѓање на записот.
    666682
    667683 * '''SELECT'''
     
    735751Без индекси, секое пребарување на оценките по корисник предизвикува непотребно оптоварување на меморијата преку '''Seq Scan'''. Индексирањето на `user_id` и `event_happening_id` обезбедува брза филтрација и поврзување на рејтинзите со соодветните термини на настаните.
    736752
    737 ==== Оптимизација:
     753==== 5. Оптимизација и индексирање:
     754
     755За да се осигураме дека погледот ќе остане брз и кога бројот на рецензии ќе порасне на милиони, се додаваат:
     756
     757 * `idx_ehr_happening_id`: За брзо филтрирање на рецензии по настан.
     758
     759 * `idx_ehr_user_id`: За брзо филтрирање на рецензии по корисник.
    738760
    739761{{{
     
    747769}}}
    748770
    749 ==== Со индекс:
     771==== 6. Резултат по оптимизација:
     772
     773По „оптимизацијата“, времето на '''SELECT''' се зголемило на 359.600ms.
     774
     775Анализа на аномалијата: Планот покажува дека базата во овој случај одбрала '''Seq Scan''' наместо '''Index Scan'''.
    750776
    751777 * '''SELECT'''