Changes between Version 29 and Version 30 of OtherTopics
- Timestamp:
- 06/24/26 02:33:09 (33 hours ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
OtherTopics
v29 v30 271 271 }}} 272 272 273 ==== 1.1. Без индекс ==== 274 WHERE s.date_time >= Кога во базата има илјадници продажби, за да се најде само последната 1 година потребен е индекс по датум. Во спротивно, ќе се проверуваат податоците од 5 години еден по еден. 273 ==== 1. Предложени индекси ==== 274 За да се забрза филтрирањето на датумите и поврзувањето на табелите, предложени се следниве индекси: 275 {{{ 276 CREATE INDEX idx_sale_date_time ON stock_management.sale(date_time DESC); 277 CREATE INDEX idx_sale_warehouse_id ON stock_management.sale(warehouse_id); 278 CREATE INDEX idx_product_supplier_id ON stock_management.product(supplier_id); 279 }}} 280 281 ==== 2. Анализа пред креирање на индексот (Без индекс) ==== 275 282 276 283 {{{ … … 375 382 '''Времетраење: 7656.576 ms''' 376 383 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. Анализа по креирање на индексот (Со индекс) ==== 395 385 396 386 {{{ … … 479 469 '''Времетраење: 4630.112 ms''' 480 470 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 директно ја елиминира потребата за процесирање на историските податоци (постари од една година), што резултира со огромен перформансен скок кој ќе станува све позначаен како што расте базата на податоци.
