wiki:Indexes

Version 5 (modified by 225144, 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)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.