Changes between Version 29 and Version 30 of OtherTopics


Ignore:
Timestamp:
06/24/26 02:33:09 (33 hours ago)
Author:
221181
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OtherTopics

    v29 v30  
    271271}}}
    272272
    273 ==== 1.1. Без индекс ====
    274 WHERE s.date_time >= Кога во базата има илјадници продажби, за да се најде само последната 1 година потребен е индекс по датум. Во спротивно, ќе се проверуваат податоците од 5 години еден по еден.
     273==== 1. Предложени индекси ====
     274За да се забрза филтрирањето на датумите и поврзувањето на табелите, предложени се следниве индекси:
     275{{{
     276CREATE INDEX idx_sale_date_time ON stock_management.sale(date_time DESC);
     277CREATE INDEX idx_sale_warehouse_id ON stock_management.sale(warehouse_id);
     278CREATE INDEX idx_product_supplier_id ON stock_management.product(supplier_id);
     279}}}
     280
     281==== 2. Анализа пред креирање на индексот (Без индекс) ====
    275282
    276283{{{
     
    375382'''Времетраење: 7656.576 ms'''
    376383
    377 '''Анализа:''' Многу бавно.
    378 
    379 ==== 1.2. Со индекс ====
    380 
    381 За да се забрзаат прашањата со временски опсег (WHERE date_time > ...)
    382 
    383 '''Применет индекс:'''
    384 {{{
    385 CREATE INDEX idx_sale_date_time ON stock_management.sale(date_time DESC);
    386 }}}
    387 
    388 Индекси на Foreign Key за подобрување на перформансите на JOIN
    389 
    390 '''Применет индекс:'''
    391 {{{
    392 CREATE INDEX idx_sale_warehouse_id ON stock_management.sale(warehouse_id);
    393 CREATE INDEX idx_product_supplier_id ON stock_management.product(supplier_id);
    394 }}}
     384==== 3. Анализа по креирање на индексот (Со индекс) ====
    395385
    396386{{{
     
    479469'''Времетраење: 4630.112 ms'''
    480470
    481 '''Анализа:''' По добро.
     471==== 4. Дали индексот навистина се користи во планот за извршување? ====
     472Да. EXPLAIN планот по креирањето експлицитно го прикажува користењето на Bitmap Index Scan on idx_sale_date_time. Наместо да прави Seq Scan (читање на целата табела) за да ги најде соодветните датуми како претходно, системот сега директно го користи индексот за брзо лоцирање на точните блокови на податоци што одговараат на условот за последните 12 месеци.
     473
     474==== 5. Заклучок за перформансите ====
     475Времето на извршување се намали значително од ~7656 ms на ~4630 ms (намалување за скоро 40%). За разлика од првото сценарио каде немавме филтрирање, овде B-Tree индексот поставен на date_time директно ја елиминира потребата за процесирање на историските податоци (постари од една година), што резултира со огромен перформансен скок кој ќе станува све позначаен како што расте базата на податоци.