Changes between Initial Version and Version 1 of Indexes


Ignore:
Timestamp:
08/31/25 21:10:59 (39 hours ago)
Author:
222004
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Indexes

    v1 v1  
     1== **Индекси и анализа на перформанси**\\
     2\\
     3
     4Овој извештај ги опфаќа најважните индекси што во реална примена ќе придонесат на подобри перформанси во SynergyMed. 
     5Се фокусира на најфреквентните пребарувања, join-операции и критични бизнис сценарија.
     6
     7Со овие индекси: 
     8 * Покриваме најфреквентни пребарувања (`username`, `e_mail`, `embg`, `medicine_name`) 
     9 * Подобрена е временската анализа (`payment_date`, `order_date`, `last_changed`) 
     10 * Финансиски извештаи се оптимизирани (`status + payment_date`) 
     11 * JOIN операциите се побрзи (`payment_id`, `manufacturer_id`, `branded_medicine_id`) 
     12 * Клучни здравствени функции (рецепти, интеракции на лекови) се извршуваат ефикасно   
     13
     14
     15----
     16
     17
     18== 1. Users (login и профили) ==
     19
     20**Сценарио:** 
     21Корисниците најчесто се бараат по `username` и `e_mail` за login и проверка на профили. 
     22
     23**Индекси:** 
     24{{{
     25
     26CREATE INDEX IF NOT EXISTS idx_users_username ON synergymed.users(username);
     27CREATE INDEX IF NOT EXISTS idx_users_email ON synergymed.users(e_mail);
     28
     29}}}
     30
     31----
     32
     33== 2. ClientOrder и Payment (нарачки и плаќања) ==
     34
     35**Сценарио:** 
     36Финансиски извештаи и анализа на нарачки секогаш користат `status` и `payment_date`. 
     37JOIN е преку `payment_id`. 
     38
     39**Индекси:** 
     40{{{
     41
     42-- Брзо пребарување по статус на плаќања
     43CREATE INDEX IF NOT EXISTS idx_payment_status ON synergymed.payment(status);
     44
     45-- Временска анализа на плаќања
     46CREATE INDEX IF NOT EXISTS idx_payment_date ON synergymed.payment(payment_date);
     47
     48-- JOIN ClientOrder → Payment
     49CREATE INDEX IF NOT EXISTS idx_clientorder_payment_id ON synergymed.clientorder(payment_id);
     50
     51}}}
     52
     53----
     54
     55== 3. Medicine и BrandedMedicine (лекови) ==
     56
     57**Сценарио:** 
     58Аптекарите и клиентите пребаруваат по `medicine_name`, `active_ingredient` или по `manufacturer_id`. 
     59
     60**Индекси:** 
     61{{{
     62
     63CREATE INDEX IF NOT EXISTS idx_medicine_name ON synergymed.medicine(medicine_name);
     64CREATE INDEX IF NOT EXISTS idx_medicine_active_ingredient ON synergymed.medicine(active_ingredient);
     65
     66CREATE INDEX IF NOT EXISTS idx_brandedmedicine_manufacturer_id ON synergymed.brandedmedicine(manufacturer_id);
     67}}}
     68
     69----
     70
     71== 4. Inventory_BrandedMedicine (залихи) ==
     72
     73**Сценарио:** 
     74Клучна е проверката на количина по `branded_medicine_id` и следење на промени со `last_changed`. 
     75
     76**Индекси:** 
     77{{{
     78
     79CREATE INDEX IF NOT EXISTS idx_inventorybm_bmid ON synergymed.inventory_brandedmedicine(branded_medicine_id);
     80CREATE INDEX IF NOT EXISTS idx_inventorybm_last_changed ON synergymed.inventory_brandedmedicine(last_changed);
     81
     82}}}
     83
     84----
     85
     86== 5. SupplyOrder (набавки) ==
     87
     88**Сценарио:** 
     89Фармациите и дистрибутерите следат `status` и `order_date` за активни нарачки. 
     90
     91**Индекси:** 
     92{{{
     93
     94CREATE INDEX IF NOT EXISTS idx_supplyorder_status ON synergymed.supplyorder(status);
     95CREATE INDEX IF NOT EXISTS idx_supplyorder_order_date ON synergymed.supplyorder(order_date);
     96
     97}}}
     98
     99----
     100
     101== 6. Prescription и SensitiveClientData (пациенти и рецепти) ==
     102
     103**Сценарио:** 
     104Пребарување по `embg` (пациент), по `client_id` и `medicine_id` кај рецепти. 
     105
     106**Индекси:** 
     107
     108{{{
     109
     110CREATE INDEX IF NOT EXISTS idx_sensitiveclientdata_embg ON synergymed.sensitiveclientdata(embg);
     111
     112CREATE INDEX IF NOT EXISTS idx_prescription_client_id ON synergymed.prescription(client_id);
     113CREATE INDEX IF NOT EXISTS idx_prescription_medicine_id ON synergymed.prescription(medicine_id);
     114
     115}}}
     116
     117----
     118
     119== 7. MedicineInteraction (интеракции на лекови) ==
     120
     121**Сценарио:** 
     122Аптекарите проверуваат комбинации на два лека и нивната сериозност. 
     123
     124**Индекси:** 
     125{{{
     126
     127CREATE INDEX IF NOT EXISTS idx_mi_medicine2 ON synergymed.medicineinteraction(medicine_id_2);
     128CREATE INDEX IF NOT EXISTS idx_mi_severity ON synergymed.medicineinteraction(severity);
     129
     130}}}
     131
     132----
     133
     134== Споредување на перформанси ==