Changes between Version 9 and Version 10 of Indexing


Ignore:
Timestamp:
08/27/25 02:13:40 (7 days ago)
Author:
221007
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Indexing

    v9 v10  
    133133CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_report_person ON report (person_id);
    134134}}}
     135
     136=== 5. Напредно филтрирање
     137
     138Овој процес на напредно филтрирање би бил многу заморен за базата кога би имало премногу податоци низ кои мора да помине.
     139Затоа ќе воведеме соодветно индекси на клучните колони (оние кои се изложени на најголемо употребување)
     140Оваа функционалност е дел од листањето на Report објекти, каде е назначена како Advanced Filtering.
     141
     142{{{
     143-- поради филтрирањето по Person атрибутот
     144CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_report_person ON report (person_id);
     145
     146-- индекси за забрзување на спојувањата на табелите во функционалноста на „Напредно филтрирање“, на страна на Reports
     147CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_employment_report_fk ON employment_report (report_id);
     148CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_academic_report_fk ON academic_report (report_id);
     149CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_medical_report_fk ON medical_report (report_id);
     150CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_criminal_report_fk ON criminal_report (report_id);
     151CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_punishment_fk_report ON punishment (report_id);
     152
     153-- за medicalreport_diagnosis поврзувањата индексите ги направив во 4та анализа
     154
     155-- чести join операции кои се користат
     156CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_medical_doctor_fk     ON medical_report (doctor_id);
     157CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_academic_institution_fk ON academic_report (institution_id);
     158CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_criminal_crime_type_fk  ON criminal_report (crime_type_id);
     159
     160-- за пребарување по %term%
     161CREATE EXTENSION IF NOT EXISTS pg_trgm;
     162
     163-- често е користено во филтрирањето за Person и Doctor, пребарувањето по име или презиме
     164CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_person_name ON person USING gin (lower(name) gin_trgm_ops);
     165CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_person_surname ON person USING gin (lower(surname) gin_trgm_ops);
     166CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_doctor_name_trgm ON doctor USING gin (lower(name) gin_trgm_ops);
     167CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_doctor_surname_trgm ON doctor USING gin (lower(surname) gin_trgm_ops);
     168
     169-- во филтрирањето се користи често за да се пресмета години и ранг на Report кои припаѓаат на Person објекти кои се од - до некоја возраст, или точна возраст
     170-- бидејќи е само за живи, затоа го условуваме кога индексот да биде активиран
     171CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_person_dob_aliveON person (date_of_birth) WHERE date_of_death IS NULL;
     172}}}