DkLab, конструктор, dkLab PostgreSQL кръпка, работеща с много големи масиви int
dkLab | Конструктор | dkLab PostgreSQL кръпка: работа с много големи int масиви
dkLab PostgreSQL кръпка ? това е малък набор от кръпки за PostgreSQL 8.3, а именно за разширенията intarray и intagg ("приноси"). Той добавя 3 (и следователно бързи) C функции за работа с много големи набори от предварително сортирани масиви.
За да приложите тези кръпки, изпълнете командите по-долу и след това възстановете PostgreSQL от източника, както обикновено:
intagg.int_array_append_aggregate (int []): обединяване на множество масиви в един голям
Специалната агрегирана функция int_array_append_aggregate () ви позволява да обедините много голям набор от дълги масиви в една съвкупна заявка. Обединяването е много бързо, защото функцията използва няколко оптимизации при разпределяне и копиране на области на паметта.
Дори ако таблицата на документите съдържа 10 000 реда, всеки с по 1000 идентификатори на думи в полето doc_word_ids, заявката ще отнеме само няколко милисекунди.
Има стандартна функция int_array_aggregate, която използва подобни техники за оптимизация и връща масив от числа, съдържащи точно числата, които са му били предадени. Тази функция обаче обединява набор от цели числа, докато не набор от масиви в един голям масив.
intarray._int_group_count_sort (int [], bool): сортиране по честота
INTEGER [] [] _int_group_count_sort (списък_сортиран INTEGER [], сортиране_asc BOOLEAN)
Представете си, че имате много голям сортиран масив от цели числа, които могат да имат дублирани стойности. Трябва да определите кои от стойностите в масива се срещат най-често и кои ? най-малко. Функцията _int_group_count_sort () ще ви помогне да направите това, като използвате минимум процесорни ресурси, дори когато работите с много голям масив. В някои случаи функцията дава над хиляда пъти подобрение на производителността спрямо стандартното използване на заявка като "GROUP BY. ORDER BY COUNT (*)".