wiki:Indexing

Version 3 (modified by 221007, 7 days ago) ( diff )

--

Индексирање

некој вовед

1. Брзо пребарување при најава на апликацијата

Ова е едно од покористиените сценарија каде соодветно најавата на корисникот наложува проверка за негово постоење, кое се врши преку прецизна споредба со email адресата.

Доколку би имале гооолем број корисници, ќе треба некако да се пребаруваат побрзо корисниците за да може најавата да се одвива без многу чекање. Затоа, ќе поставиме индекс за лесно пребарување по email. Овој е BTREE индекс и е доста погоден за конкретни пребарувања (where email = :param)

Напомена: Login акцијата оди преку email, бидејќи истиот е поставен како уникатен, и 1 електронска адреса може да припаѓа на само 1 корисник во базата.

-- Појаснување:креира индекс со назив idx_user_email на табелата reportiumuser за колоната email
CREATE INDEX IF NOT EXISTS idx_user_email ON reportiumuser (email);

За да се провери кога би имало многу податоци:

EXPLAIN (ANALYZE, BUFFERS)
SELECT password_hash
FROM reportiumuser
WHERE email = :parameter_email ;

2. Ефикасно и ефективно сортирање по created_at за Report

Многу важно е сортирањето по датумот кога е креиран некој извештај да биде ефикасно и ефективно исто-времено. За да постигнеме таква состојба, воведуваме индексирање, каде додаваме и соодветен tiebreaker, кој игра улога во случај 2 записи да имаат ист датум на креирањем, тогаш сортирањето се одвива според report_id кое е уникатно во самата табела..

-- се креира индекс со име idx_report_created_with_id врз Report табелата кој ги зема во обзир колоните created_at и report_id
CREATE INDEX idx_report_created_with_id ON report (created_at, report_id);

Ова би овозможило сортирањето да е брзо и ефикасно кога во апликацијата би се ракувало со масовна бројка на Report записи.

За тестирање:

EXPLAIN (ANALYZE, BUFFERS)
SELECT report_id, report_type, person_id, summary
FROM report
ORDER BY created_at, report_id
LIMIT 20;

или

EXPLAIN (ANALYZE, BUFFERS)
SELECT report_id, report_type, person_id, summary
FROM report
ORDER BY created_at DESC, report_id DESC
LIMIT 20;


Attachments (2)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.