Version 5 (modified by 3 weeks ago) ( diff ) | ,
---|
Индекси
Индекс на project_roles
Често се поставуваат прашлници по role_name и project_id - добар кандидат за индекс.
CREATE INDEX idx_role_name_project ON project_role(name,project_id)
Индекс на прашалник за канали во даден проект
Прашалник
SELECT m.* FROM messages m JOIN channel c ON m.channel_id = c.id WHERE c.name = :channelName AND c.project_id = :projectId ORDER BY m.sent_at;
- Бидејќи овој прашалик е многу чест и природата на апликацијата е таква што овозможува да има голем број пораки и канали, може да се индексира според WHERE клаузата.
CREATE UNIQUE INDEX idx_channel_name_project ON channel(project_id,name);
Резултати
Без Индекс
Со Индекс
- Тестирањето беше извршено со 12,000 записи во channel табелата и 12,000,000 записи во message табелата.
- Има значително подобрување во времето на извршување на прашалникот при користење на индекс
- Се гледа дека се користи индексот (Index Scan).
Заклучок
Заради тоа што поголемиот дел од прашалниците користат примарни клучеви, изборот на индекси е значително намален. Постоечките индекси се избрани со цел и причина да ги подобрат перформансите на базата само таму каде што има реална потреба.
Attachments (2)
- message_query_channel_NO_INDEX.png (85.0 KB ) - added by 3 weeks ago.
- message_query_channel_INDEX.png (82.4 KB ) - added by 3 weeks ago.
Download all attachments as: .zip
Note:
See TracWiki
for help on using the wiki.