Changes between Version 63 and Version 64 of QueryOptimization
- Timestamp:
- 05/17/26 13:37:42 (10 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
QueryOptimization
v63 v64 663 663 }}} 664 664 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''', што значи дека веќе постои ефикасна патека за пронаоѓање на записот. 666 682 667 683 * '''SELECT''' … … 735 751 Без индекси, секое пребарување на оценките по корисник предизвикува непотребно оптоварување на меморијата преку '''Seq Scan'''. Индексирањето на `user_id` и `event_happening_id` обезбедува брза филтрација и поврзување на рејтинзите со соодветните термини на настаните. 736 752 737 ==== Оптимизација: 753 ==== 5. Оптимизација и индексирање: 754 755 За да се осигураме дека погледот ќе остане брз и кога бројот на рецензии ќе порасне на милиони, се додаваат: 756 757 * `idx_ehr_happening_id`: За брзо филтрирање на рецензии по настан. 758 759 * `idx_ehr_user_id`: За брзо филтрирање на рецензии по корисник. 738 760 739 761 {{{ … … 747 769 }}} 748 770 749 ==== Со индекс: 771 ==== 6. Резултат по оптимизација: 772 773 По „оптимизацијата“, времето на '''SELECT''' се зголемило на 359.600ms. 774 775 Анализа на аномалијата: Планот покажува дека базата во овој случај одбрала '''Seq Scan''' наместо '''Index Scan'''. 750 776 751 777 * '''SELECT'''
