Re: Key/Value reference table generation: INSERT/UPDATE performance
От | PFC |
---|---|
Тема | Re: Key/Value reference table generation: INSERT/UPDATE performance |
Дата | |
Msg-id | op.tsp32yfscigqcu@apollo13 обсуждение исходный текст |
Ответ на | Key/Value reference table generation: INSERT/UPDATE performance (valgog <valgog@gmail.com>) |
Ответы |
Re: Key/Value reference table generation: INSERT/UPDATE performance
|
Список | pgsql-performance |
On Tue, 22 May 2007 10:23:03 +0200, valgog <valgog@gmail.com> wrote: > I found several post about INSERT/UPDATE performance in this group, > but actually it was not really what I am searching an answer for... > > I have a simple reference table WORD_COUNTS that contains the count of > words that appear in a word array storage in another table. Mmm. If I were you, I would : - Create a procedure that flattens all the arrays and returns all the words : PROCEDURE flatten_arrays RETURNS SETOF TEXT FOR word_array IN SELECT word_array FROM your_table LOOP FOR i IN 1...array_upper( word_array ) LOOP RETURN NEXT tolower( word_array[ i ] ) So, SELECT * FROM flatten_arrays() returns all the words in all the arrays. To get the counts quickly I'd do this : SELECT word, count(*) FROM flatten_arrays() AS word GROUP BY word You can then populate your counts table very easily and quickly, since it's just a seq scan and hash aggregate. One second for 10.000 rows would be slow.
В списке pgsql-performance по дате отправления: