Version 9 (modified by 2 months ago) ( diff ) | ,
---|
Индекси
Индексите ги забрзуваат операциите за пребарување и филтрирање, што значително го намалува времето на извршување на SQL барања.
Индексирањето има смисла ако ќе ја подобри брзината на наредбите SELECT, JOIN, WHERE, ORDER BY и GROUP BY.
Направивме измени во db.js така што Client
го заменивме за Pool
бидејки client секогаш отвара нова конекција а со pool користи збир конекции за подобра оптимизација.
Кога зборуваме за поставување на барања до база, на старата верзија тоа беше веројатно многу по лимитирано,
а сега имаме овозможено повеќе истовремени конекции т.е. max: 20
.
Во нашиот код рачно се отвора и затвора конекција, додека новиот код користи getClient()
за подобра контрола над конекциите. Освен тоа при пад на конекција потребно е restart а сега имаме момент каде pool.on("error")
ја фаќа грешката.
Да не заборавиме и на Timeout моментот, сега имаме поставено idleTimeoutMillis
и connectionTimeoutMillis
за подобро управување.
module.exports = { query: (text, params) => pool.query(text, params), getClient: async () => { const client = await pool.connect(); return client; }, };
Што треба да направиме прво за да имплементираме индекси?
-> Анализа на податоците
Која колона најчесто се пребарува?
-> Анализа на SQL-прашалници
Кои SELECT наредби се најбавни?
-> Креирање индекси
Додавање индекси на соодветните колони
Attachments (2)
- testiranjeCREATEINDEX.png (177.5 KB ) - added by 2 months ago.
- explain.png (179.2 KB ) - added by 2 months ago.
Download all attachments as: .zip