Changes between Version 11 and Version 12 of UseCaseModel/evaluation


Ignore:
Timestamp:
09/01/25 14:22:59 (4 days ago)
Author:
175012
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCaseModel/evaluation

    v11 v12  
    6767Го користиме тој индекс во реален query (бидејќи филтрираме по тие полиња).
    6868
     69== Што е важно за индекси (TL;DR):
     70
     71Примарните клучеви → автоматски се индексирани
     72
     73Странските клучеви → создај индекс за подобар JOIN
     74
     75Филтрирање по колони (WHERE) → индекс помага
     76
     77Сортирање и групирање (ORDER BY, GROUP BY) → индекс помага
     78
     79-- Индекси за JOIN перформанси (врз странски клучеви и ID полиња)
     80
     81CREATE INDEX IF NOT EXISTS idx_policy_package_code ON project_2425.policy(package_code);
     82CREATE INDEX IF NOT EXISTS idx_policy_d_embg ON project_2425.policy(d_embg);
     83
     84CREATE INDEX IF NOT EXISTS idx_pol_dog_c_id ON project_2425.pol_dog(c_id);
     85
     86CREATE INDEX IF NOT EXISTS idx_payment_policy_id ON project_2425.payment(policy_id);
     87
     88CREATE INDEX IF NOT EXISTS idx_auto_pol_pol_id ON project_2425.auto_pol(pol_id);
     89CREATE INDEX IF NOT EXISTS idx_auto_pol_v_id ON project_2425.auto_pol(v_id);
     90
     91CREATE INDEX IF NOT EXISTS idx_property_pol_pol_id ON project_2425.property_pol(pol_id);
     92CREATE INDEX IF NOT EXISTS idx_property_pol_prop_id ON project_2425.property_pol(prop_id);
     93
     94CREATE INDEX IF NOT EXISTS idx_travel_pol_pol_id ON project_2425.travel_pol(pol_id);
     95CREATE INDEX IF NOT EXISTS idx_travel_pol_o_embg ON project_2425.travel_pol(o_embg);
     96
     97CREATE INDEX IF NOT EXISTS idx_covers_package_code ON project_2425.covers(package_code);
     98
     99-- Индекси за WHERE филтри (датуми, email, суми, итн.)
     100
     101CREATE INDEX IF NOT EXISTS idx_policy_s_date ON project_2425.policy(s_date);
     102CREATE INDEX IF NOT EXISTS idx_policy_e_date ON project_2425.policy(e_date);
     103
     104CREATE INDEX IF NOT EXISTS idx_customer_email ON project_2425.customer(email);
     105CREATE INDEX IF NOT EXISTS idx_customer_type ON project_2425.customer(type);
     106
     107CREATE INDEX IF NOT EXISTS idx_payment_date ON project_2425.payment(p_date);
     108CREATE INDEX IF NOT EXISTS idx_payment_amount ON project_2425.payment(p_amount);
     109
     110CREATE INDEX IF NOT EXISTS idx_package_type_pol ON project_2425.package(type_pol);
     111
     112-- Индекси за уникатни вредности (ако има смисла)
     113
     114CREATE UNIQUE INDEX IF NOT EXISTS idx_customer_email_unique ON project_2425.customer(email);
     115CREATE UNIQUE INDEX IF NOT EXISTS idx_vehicle_license_plate_unique ON project_2425.vehicle(license_plate);
     116
     117Тестирање на CREATE INDEX наредби
     118
     119[[Image(Index1.png)]]
     120
     121== Додатни чекори за оптимизација на индекси со EXPLAIN ANALYZE
     122
     123Сега ке направиме мало тестирање со опцијата во прилог,
     124доколку Dbeaver користи Seq Scan (Sequence Scan), значи дека треба подобар индекс.
     125{{{    EXPLAIN ANALYZE SELECT * FROM project_2425."policy" WHERE s_date BETWEEN '2023-01-01' AND '2025-12-31'; }}}
     126
     127Бидејки на ова барање добивме одговор со Seq Scan наместо со Index Scan,
     128ова во наш случај не би требало да е проблем бидејки базата нема премногу податоци и табелите се мали.
    69129
    70130== Примери за тригери