Re: WIP: index support for regexp search

Erik Rijkers <er@xs4all.nl>

From: "er" <er@xs4all.nl>
To: "Alexander Korotkov" <aekorotkov@gmail.com>
Cc: "Heikki Linnakangas" <hlinnakangas@vmware.com>, "Tomas Vondra" <tv@fuzzy.cz>, pgsql-hackers@postgresql.org, pavel.stehule@gmail.com
Date: 2012-11-29T08:58:52Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix filling of postmaster.pid in bootstrap/standalone mode.

  2. Add explicit casts in ilist.h's inline functions.

On Mon, November 26, 2012 20:49, Alexander Korotkov wrote:

> trgm-regexp-0.6.patch.gz

I ran the simple-minded tests against generated data (similar to the ones I did in January 2012). 
The problems of that older version seem pretty much all removed. (although I didn't do much work
on it -- just reran these tests).

I used two 2 instances, 'HEAD' and 'trgm_regex', which were both compiled with

     '--enable-depend' '--with-openssl' '--with-perl' '--with-libxml'

Tables used:

            rowcount     size table        size index (trgm)

 azjunk4   10^4 rows      1,171,456 |       9,781,248
 azjunk5   10^5 rows     11,706,368 |      65,093,632
 azjunk6   10^6 rows    117,030,912 |     726,310,912
 azjunk7   10^7 rows  1,170,292,736 |   4,976,189,440

   (See my previous emails for a generating script)

Tables contain random generated text:

table azjunk7 limit 5;
                                       txt
----------------------------------------------------------------------------------
 i kzzhv ssaa zv x  xlepzxsgbdkxev v wn dmvqkuwb qxkyvgab gpidaosaqbewqimmai  jxj
 bvwn zbevtzyhibbn hoctxurutn pvlatjjyxf f runa owpltbcunrbq ux peoook rxwoscbytz
 bbjlbbhhkivjivklgbh tvapzogh rj ky ahvgkvvlfudotvqapznludohdoyqrp kvothyclbckbxu
 hvic gomewbp izsjifqggyqgzcghdat lb kud ltfqaxqxjjom qkw wqggikgvph   yi sftmbjt
 edbjfl vtcasudjpgfgjaf swooxygsse flnqd pxzsdmesqhqbzgirswysote muakq agk p w uq
(5 rows)

with index on column 'txt':

  create index az7_idx on azjunk7 using gin (txt gin_trgm_ops);

Queries were of the form:

   explain analyze select txt from azjunkXX where txt ~ '$REGEX';

The main problem with the January version was that it chose to use the trgm index even when it
could take a long time (hours).  This has been resolved as far as I can see, and the results are
now very attractive.

(There does seem to be a very slight regression on the seqscan, but it's so small that I'm not yet
sure it's not noise)


Hardware: AMD FX-8120 with Linux 2.6.32-279.14.1.el6.x86_64  x86_64  GNU/Linux

PostgreSQL 9.3devel-trgm_regex-20121127_2353-e78d288c895bd296e3cb1ca29c7fe2431eef3fcd on
x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.7.2, 64-bit


 port instance    table    regex                 rows method            expl.analyze timing

 6543 HEAD        azjunk4  x[ae]q                  46 Seq Scan             12.962 ms
 6554 trgm_regex  azjunk4  x[ae]q                  46 Bitmap Heap Scan      0.800 ms

 6543 HEAD        azjunk4  x[ae]{1}q               46 Seq Scan             12.487 ms
 6554 trgm_regex  azjunk4  x[ae]{1}q               46 Bitmap Heap Scan      0.209 ms

 6543 HEAD        azjunk4  x[ae]{1,1}q             46 Seq Scan             12.266 ms
 6554 trgm_regex  azjunk4  x[ae]{1,1}q             46 Bitmap Heap Scan      0.210 ms

 6543 HEAD        azjunk4  x[ae]{,2}q               0 Seq Scan             14.322 ms
 6554 trgm_regex  azjunk4  x[ae]{,2}q               0 Bitmap Heap Scan      0.610 ms

 6543 HEAD        azjunk4  x[ae]{,10}q              0 Seq Scan             20.503 ms
 6554 trgm_regex  azjunk4  x[ae]{,10}q              0 Bitmap Heap Scan      0.511 ms

 6543 HEAD        azjunk4  x[ae]{1,2}q             49 Seq Scan             13.060 ms
 6554 trgm_regex  azjunk4  x[ae]{1,2}q             49 Bitmap Heap Scan      0.429 ms

 6543 HEAD        azjunk4  x[aei]q                 81 Seq Scan             12.487 ms
 6554 trgm_regex  azjunk4  x[aei]q                 81 Bitmap Heap Scan      0.367 ms

 6543 HEAD        azjunk4  x[aei]{1}q              81 Seq Scan             12.132 ms
 6554 trgm_regex  azjunk4  x[aei]{1}q              81 Bitmap Heap Scan      0.336 ms

 6543 HEAD        azjunk4  x[aei]{1,1}q            81 Seq Scan             12.168 ms
 6554 trgm_regex  azjunk4  x[aei]{1,1}q            81 Bitmap Heap Scan      0.319 ms

 6543 HEAD        azjunk4  x[aei]{,2}q              0 Seq Scan             14.586 ms
 6554 trgm_regex  azjunk4  x[aei]{,2}q              0 Bitmap Heap Scan      0.621 ms

 6543 HEAD        azjunk4  x[aei]{,10}q             0 Seq Scan             20.134 ms
 6554 trgm_regex  azjunk4  x[aei]{,10}q             0 Bitmap Heap Scan      0.552 ms

 6543 HEAD        azjunk4  x[aei]{1,2}q            89 Seq Scan             12.553 ms
 6554 trgm_regex  azjunk4  x[aei]{1,2}q            89 Bitmap Heap Scan      0.916 ms

 6543 HEAD        azjunk4  x[aei]{1,3}q            89 Seq Scan             13.055 ms
 6554 trgm_regex  azjunk4  x[aei]{1,3}q            89 Seq Scan             13.064 ms

 6543 HEAD        azjunk4  x[aei]q                 81 Seq Scan             11.856 ms
 6554 trgm_regex  azjunk4  x[aei]q                 81 Bitmap Heap Scan      0.398 ms

 6543 HEAD        azjunk4  x[aei]{1}q              81 Seq Scan             11.951 ms
 6554 trgm_regex  azjunk4  x[aei]{1}q              81 Bitmap Heap Scan      0.369 ms

 6543 HEAD        azjunk4  x[aei]{1,1}q            81 Seq Scan             12.750 ms
 6554 trgm_regex  azjunk4  x[aei]{1,1}q            81 Bitmap Heap Scan      0.355 ms

 6543 HEAD        azjunk4  x[aei]{,2}q              0 Seq Scan             14.032 ms
 6554 trgm_regex  azjunk4  x[aei]{,2}q              0 Bitmap Heap Scan      0.540 ms

 6543 HEAD        azjunk4  x[aei]{,10}q             0 Seq Scan             20.377 ms
 6554 trgm_regex  azjunk4  x[aei]{,10}q             0 Bitmap Heap Scan      0.550 ms

 6543 HEAD        azjunk4  x[aei]{1,2}q            89 Seq Scan             12.706 ms
 6554 trgm_regex  azjunk4  x[aei]{1,2}q            89 Bitmap Heap Scan      0.969 ms

 6543 HEAD        azjunk4  x[aei]{1,3}q            89 Seq Scan             13.127 ms
 6554 trgm_regex  azjunk4  x[aei]{1,3}q            89 Seq Scan             13.025 ms

 6543 HEAD        azjunk4  x[aeio]q               105 Seq Scan             12.533 ms
 6554 trgm_regex  azjunk4  x[aeio]q               105 Bitmap Heap Scan      0.391 ms

 6543 HEAD        azjunk4  x[aeio]{1}q            105 Seq Scan             12.532 ms
 6554 trgm_regex  azjunk4  x[aeio]{1}q            105 Bitmap Heap Scan      0.362 ms

 6543 HEAD        azjunk4  x[aeio]{1,1}q          105 Seq Scan             12.323 ms
 6554 trgm_regex  azjunk4  x[aeio]{1,1}q          105 Bitmap Heap Scan      0.449 ms

 6543 HEAD        azjunk4  x[aeio]{,2}q             0 Seq Scan             14.417 ms
 6554 trgm_regex  azjunk4  x[aeio]{,2}q             0 Bitmap Heap Scan      0.844 ms

 6543 HEAD        azjunk4  x[aeio]{,10}q            0 Seq Scan             23.056 ms
 6554 trgm_regex  azjunk4  x[aeio]{,10}q            0 Bitmap Heap Scan      0.668 ms

 6543 HEAD        azjunk4  x[aeio]{1,2}q          121 Seq Scan             13.072 ms
 6554 trgm_regex  azjunk4  x[aeio]{1,2}q          121 Seq Scan             13.750 ms

 6543 HEAD        azjunk4  x[aeio]{1,3}q          123 Seq Scan             12.916 ms
 6554 trgm_regex  azjunk4  x[aeio]{1,3}q          123 Seq Scan             13.078 ms

 6543 HEAD        azjunk4  x[aeio]{1,4}q          124 Seq Scan             13.478 ms
 6554 trgm_regex  azjunk4  x[aeio]{1,4}q          124 Seq Scan             14.334 ms

 6543 HEAD        azjunk4  x[aeio]{2,4}q           19 Seq Scan             13.922 ms
 6554 trgm_regex  azjunk4  x[aeio]{2,4}q           19 Seq Scan             13.503 ms

 6543 HEAD        azjunk4  x[aeio]{3,4}q            3 Seq Scan             14.325 ms
 6554 trgm_regex  azjunk4  x[aeio]{3,4}q            3 Seq Scan             13.429 ms

 6543 HEAD        azjunk4  x[aeiou]q              134 Seq Scan             12.356 ms
 6554 trgm_regex  azjunk4  x[aeiou]q              134 Seq Scan             13.215 ms

 6543 HEAD        azjunk4  x[aeiou]{1}q           134 Seq Scan             13.005 ms
 6554 trgm_regex  azjunk4  x[aeiou]{1}q           134 Seq Scan             12.893 ms

 6543 HEAD        azjunk4  x[aeiou]{1,1}q         134 Seq Scan             12.430 ms
 6554 trgm_regex  azjunk4  x[aeiou]{1,1}q         134 Seq Scan             13.108 ms

 6543 HEAD        azjunk4  x[aeiou]{,2}q            0 Seq Scan             14.486 ms
 6554 trgm_regex  azjunk4  x[aeiou]{,2}q            0 Bitmap Heap Scan      0.349 ms

 6543 HEAD        azjunk4  x[aeiou]{,10}q           0 Seq Scan             21.597 ms
 6554 trgm_regex  azjunk4  x[aeiou]{,10}q           0 Bitmap Heap Scan      0.363 ms

 6543 HEAD        azjunk4  x[aeiou]{1,2}q         156 Seq Scan             13.069 ms
 6554 trgm_regex  azjunk4  x[aeiou]{1,2}q         156 Seq Scan             13.879 ms

 6543 HEAD        azjunk4  x[aeiou]{1,3}q         160 Seq Scan             13.005 ms
 6554 trgm_regex  azjunk4  x[aeiou]{1,3}q         160 Seq Scan             14.016 ms

 6543 HEAD        azjunk4  x[aeiou]{1,4}q         161 Seq Scan             13.603 ms
 6554 trgm_regex  azjunk4  x[aeiou]{1,4}q         161 Seq Scan             14.667 ms

 6543 HEAD        azjunk4  x[aeiou]{2,4}q          27 Seq Scan             13.656 ms
 6554 trgm_regex  azjunk4  x[aeiou]{2,4}q          27 Seq Scan             14.113 ms

 6543 HEAD        azjunk4  x[aeiou]{3,4}q           5 Seq Scan             13.541 ms
 6554 trgm_regex  azjunk4  x[aeiou]{3,4}q           5 Seq Scan             14.265 ms

 6543 HEAD        azjunk4  x[aeiou]{1,5}q         162 Seq Scan             13.750 ms
 6554 trgm_regex  azjunk4  x[aeiou]{1,5}q         162 Seq Scan             13.858 ms

 6543 HEAD        azjunk4  x[aeiou]{2,5}q          28 Seq Scan             13.745 ms
 6554 trgm_regex  azjunk4  x[aeiou]{2,5}q          28 Seq Scan             13.680 ms

 6543 HEAD        azjunk4  x[aeiou]{4,5}q           2 Seq Scan             13.577 ms
 6554 trgm_regex  azjunk4  x[aeiou]{4,5}q           2 Seq Scan             13.755 ms

 6543 HEAD        azjunk4  x[aeiouy]q             173 Seq Scan             12.106 ms
 6554 trgm_regex  azjunk4  x[aeiouy]q             173 Seq Scan             12.655 ms

 6543 HEAD        azjunk4  x[aeiouy]{1}q          173 Seq Scan             12.488 ms
 6554 trgm_regex  azjunk4  x[aeiouy]{1}q          173 Seq Scan             12.723 ms

 6543 HEAD        azjunk4  x[aeiouy]{1,1}q        173 Seq Scan             12.525 ms
 6554 trgm_regex  azjunk4  x[aeiouy]{1,1}q        173 Seq Scan             13.957 ms

 6543 HEAD        azjunk4  x[aeiouy]{,2}q           0 Seq Scan             14.574 ms
 6554 trgm_regex  azjunk4  x[aeiouy]{,2}q           0 Bitmap Heap Scan      0.295 ms

 6543 HEAD        azjunk4  x[aeiouy]{,10}q          0 Seq Scan             20.916 ms
 6554 trgm_regex  azjunk4  x[aeiouy]{,10}q          0 Bitmap Heap Scan      0.311 ms

 6543 HEAD        azjunk4  x[aeiouy]{1,2}q        204 Seq Scan             12.730 ms
 6554 trgm_regex  azjunk4  x[aeiouy]{1,2}q        204 Seq Scan             13.392 ms

 6543 HEAD        azjunk4  x[aeiouy]{1,3}q        215 Seq Scan             12.824 ms
 6554 trgm_regex  azjunk4  x[aeiouy]{1,3}q        215 Seq Scan             13.083 ms

 6543 HEAD        azjunk4  x[aeiouy]{1,4}q        218 Seq Scan             13.985 ms
 6554 trgm_regex  azjunk4  x[aeiouy]{1,4}q        218 Seq Scan             13.890 ms

 6543 HEAD        azjunk4  x[aeiouy]{2,4}q         46 Seq Scan             13.735 ms
 6554 trgm_regex  azjunk4  x[aeiouy]{2,4}q         46 Seq Scan             13.724 ms

 6543 HEAD        azjunk4  x[aeiouy]{3,4}q         14 Seq Scan             13.470 ms
 6554 trgm_regex  azjunk4  x[aeiouy]{3,4}q         14 Seq Scan             14.046 ms

 6543 HEAD        azjunk4  x[aeiouy]{1,5}q        219 Seq Scan             14.245 ms
 6554 trgm_regex  azjunk4  x[aeiouy]{1,5}q        219 Seq Scan             14.370 ms

 6543 HEAD        azjunk4  x[aeiouy]{2,5}q         47 Seq Scan             13.483 ms
 6554 trgm_regex  azjunk4  x[aeiouy]{2,5}q         47 Seq Scan             15.065 ms

 6543 HEAD        azjunk4  x[aeiouy]{4,5}q          4 Seq Scan             13.394 ms
 6554 trgm_regex  azjunk4  x[aeiouy]{4,5}q          4 Seq Scan             14.158 ms

 6543 HEAD        azjunk5  x[ae]q                 677 Seq Scan            114.862 ms
 6554 trgm_regex  azjunk5  x[ae]q                 677 Bitmap Heap Scan      2.213 ms

 6543 HEAD        azjunk5  x[ae]{1}q              677 Seq Scan            119.024 ms
 6554 trgm_regex  azjunk5  x[ae]{1}q              677 Bitmap Heap Scan      1.800 ms

 6543 HEAD        azjunk5  x[ae]{1,1}q            677 Seq Scan            118.500 ms
 6554 trgm_regex  azjunk5  x[ae]{1,1}q            677 Bitmap Heap Scan      1.788 ms

 6543 HEAD        azjunk5  x[ae]{,2}q               0 Seq Scan            138.023 ms
 6554 trgm_regex  azjunk5  x[ae]{,2}q               0 Bitmap Heap Scan      9.822 ms

 6543 HEAD        azjunk5  x[ae]{,10}q              0 Seq Scan            223.479 ms
 6554 trgm_regex  azjunk5  x[ae]{,10}q              0 Bitmap Heap Scan      9.141 ms

 6543 HEAD        azjunk5  x[ae]{1,2}q            723 Seq Scan            122.973 ms
 6554 trgm_regex  azjunk5  x[ae]{1,2}q            723 Bitmap Heap Scan      3.865 ms

 6543 HEAD        azjunk5  x[aei]q                982 Seq Scan            121.424 ms
 6554 trgm_regex  azjunk5  x[aei]q                982 Bitmap Heap Scan      2.639 ms

 6543 HEAD        azjunk5  x[aei]{1}q             982 Seq Scan            119.213 ms
 6554 trgm_regex  azjunk5  x[aei]{1}q             982 Bitmap Heap Scan      2.769 ms

 6543 HEAD        azjunk5  x[aei]{1,1}q           982 Seq Scan            121.673 ms
 6554 trgm_regex  azjunk5  x[aei]{1,1}q           982 Bitmap Heap Scan      2.657 ms

 6543 HEAD        azjunk5  x[aei]{,2}q              0 Seq Scan            142.256 ms
 6554 trgm_regex  azjunk5  x[aei]{,2}q              0 Bitmap Heap Scan      5.588 ms

 6543 HEAD        azjunk5  x[aei]{,10}q             0 Seq Scan            214.769 ms
 6554 trgm_regex  azjunk5  x[aei]{,10}q             0 Bitmap Heap Scan      9.007 ms

 6543 HEAD        azjunk5  x[aei]{1,2}q          1075 Seq Scan            128.672 ms
 6554 trgm_regex  azjunk5  x[aei]{1,2}q          1075 Bitmap Heap Scan      8.079 ms

 6543 HEAD        azjunk5  x[aei]{1,3}q          1086 Seq Scan            127.069 ms
 6554 trgm_regex  azjunk5  x[aei]{1,3}q          1086 Bitmap Heap Scan     27.654 ms

 6543 HEAD        azjunk5  x[aei]q                982 Seq Scan            121.431 ms
 6554 trgm_regex  azjunk5  x[aei]q                982 Bitmap Heap Scan      2.782 ms

 6543 HEAD        azjunk5  x[aei]{1}q             982 Seq Scan            121.270 ms
 6554 trgm_regex  azjunk5  x[aei]{1}q             982 Bitmap Heap Scan      2.603 ms

 6543 HEAD        azjunk5  x[aei]{1,1}q           982 Seq Scan            120.032 ms
 6554 trgm_regex  azjunk5  x[aei]{1,1}q           982 Bitmap Heap Scan      2.627 ms

 6543 HEAD        azjunk5  x[aei]{,2}q              0 Seq Scan            143.379 ms
 6554 trgm_regex  azjunk5  x[aei]{,2}q              0 Bitmap Heap Scan      4.906 ms

 6543 HEAD        azjunk5  x[aei]{,10}q             0 Seq Scan            196.212 ms
 6554 trgm_regex  azjunk5  x[aei]{,10}q             0 Bitmap Heap Scan      4.707 ms

 6543 HEAD        azjunk5  x[aei]{1,2}q          1075 Seq Scan            127.050 ms
 6554 trgm_regex  azjunk5  x[aei]{1,2}q          1075 Bitmap Heap Scan      8.474 ms

 6543 HEAD        azjunk5  x[aei]{1,3}q          1086 Seq Scan            127.090 ms
 6554 trgm_regex  azjunk5  x[aei]{1,3}q          1086 Bitmap Heap Scan     27.646 ms

 6543 HEAD        azjunk5  x[aeio]q              1292 Seq Scan            119.951 ms
 6554 trgm_regex  azjunk5  x[aeio]q              1292 Bitmap Heap Scan      3.881 ms

 6543 HEAD        azjunk5  x[aeio]{1}q           1292 Seq Scan            123.444 ms
 6554 trgm_regex  azjunk5  x[aeio]{1}q           1292 Bitmap Heap Scan      3.346 ms

 6543 HEAD        azjunk5  x[aeio]{1,1}q         1292 Seq Scan            124.024 ms
 6554 trgm_regex  azjunk5  x[aeio]{1,1}q         1292 Bitmap Heap Scan      3.681 ms

 6543 HEAD        azjunk5  x[aeio]{,2}q             0 Seq Scan            152.181 ms
 6554 trgm_regex  azjunk5  x[aeio]{,2}q             0 Bitmap Heap Scan      5.774 ms

 6543 HEAD        azjunk5  x[aeio]{,10}q            0 Seq Scan            214.168 ms
 6554 trgm_regex  azjunk5  x[aeio]{,10}q            0 Bitmap Heap Scan     12.074 ms

 6543 HEAD        azjunk5  x[aeio]{1,2}q         1441 Seq Scan            128.491 ms
 6554 trgm_regex  azjunk5  x[aeio]{1,2}q         1441 Bitmap Heap Scan     22.538 ms

 6543 HEAD        azjunk5  x[aeio]{1,3}q         1461 Seq Scan            132.987 ms
 6554 trgm_regex  azjunk5  x[aeio]{1,3}q         1461 Seq Scan            125.682 ms

 6543 HEAD        azjunk5  x[aeio]{1,4}q         1464 Seq Scan            132.729 ms
 6554 trgm_regex  azjunk5  x[aeio]{1,4}q         1464 Seq Scan            133.625 ms

 6543 HEAD        azjunk5  x[aeio]{2,4}q          175 Seq Scan            135.328 ms
 6554 trgm_regex  azjunk5  x[aeio]{2,4}q          175 Seq Scan            134.194 ms

 6543 HEAD        azjunk5  x[aeio]{3,4}q           23 Seq Scan            131.590 ms
 6554 trgm_regex  azjunk5  x[aeio]{3,4}q           23 Seq Scan            135.435 ms

 6543 HEAD        azjunk5  x[aeiou]q             1598 Seq Scan            124.063 ms
 6554 trgm_regex  azjunk5  x[aeiou]q             1598 Seq Scan            124.983 ms

 6543 HEAD        azjunk5  x[aeiou]{1}q          1598 Seq Scan            134.563 ms
 6554 trgm_regex  azjunk5  x[aeiou]{1}q          1598 Seq Scan            128.089 ms

 6543 HEAD        azjunk5  x[aeiou]{1,1}q        1598 Seq Scan            124.158 ms
 6554 trgm_regex  azjunk5  x[aeiou]{1,1}q        1598 Seq Scan            128.355 ms

 6543 HEAD        azjunk5  x[aeiou]{,2}q            0 Seq Scan            144.541 ms
 6554 trgm_regex  azjunk5  x[aeiou]{,2}q            0 Bitmap Heap Scan      2.369 ms

 6543 HEAD        azjunk5  x[aeiou]{,10}q           0 Seq Scan            208.091 ms
 6554 trgm_regex  azjunk5  x[aeiou]{,10}q           0 Bitmap Heap Scan      2.528 ms

 6543 HEAD        azjunk5  x[aeiou]{1,2}q        1838 Seq Scan            130.474 ms
 6554 trgm_regex  azjunk5  x[aeiou]{1,2}q        1838 Seq Scan            130.433 ms

 6543 HEAD        azjunk5  x[aeiou]{1,3}q        1886 Seq Scan            134.002 ms
 6554 trgm_regex  azjunk5  x[aeiou]{1,3}q        1886 Seq Scan            134.786 ms

 6543 HEAD        azjunk5  x[aeiou]{1,4}q        1892 Seq Scan            137.588 ms
 6554 trgm_regex  azjunk5  x[aeiou]{1,4}q        1892 Seq Scan            145.194 ms

 6543 HEAD        azjunk5  x[aeiou]{2,4}q         299 Seq Scan            136.125 ms
 6554 trgm_regex  azjunk5  x[aeiou]{2,4}q         299 Seq Scan            138.212 ms

 6543 HEAD        azjunk5  x[aeiou]{3,4}q          54 Seq Scan            135.205 ms
 6554 trgm_regex  azjunk5  x[aeiou]{3,4}q          54 Seq Scan            134.146 ms

 6543 HEAD        azjunk5  x[aeiou]{1,5}q        1895 Seq Scan            137.151 ms
 6554 trgm_regex  azjunk5  x[aeiou]{1,5}q        1895 Seq Scan            140.986 ms

 6543 HEAD        azjunk5  x[aeiou]{2,5}q         302 Seq Scan            142.189 ms
 6554 trgm_regex  azjunk5  x[aeiou]{2,5}q         302 Seq Scan            137.368 ms

 6543 HEAD        azjunk5  x[aeiou]{4,5}q           9 Seq Scan            138.165 ms
 6554 trgm_regex  azjunk5  x[aeiou]{4,5}q           9 Seq Scan            137.122 ms

 6543 HEAD        azjunk5  x[aeiouy]q            1913 Seq Scan            126.283 ms
 6554 trgm_regex  azjunk5  x[aeiouy]q            1913 Seq Scan            130.424 ms

 6543 HEAD        azjunk5  x[aeiouy]{1}q         1913 Seq Scan            125.947 ms
 6554 trgm_regex  azjunk5  x[aeiouy]{1}q         1913 Seq Scan            131.957 ms

 6543 HEAD        azjunk5  x[aeiouy]{1,1}q       1913 Seq Scan            126.529 ms
 6554 trgm_regex  azjunk5  x[aeiouy]{1,1}q       1913 Seq Scan            130.958 ms

 6543 HEAD        azjunk5  x[aeiouy]{,2}q           0 Seq Scan            147.704 ms
 6554 trgm_regex  azjunk5  x[aeiouy]{,2}q           0 Bitmap Heap Scan      2.331 ms

 6543 HEAD        azjunk5  x[aeiouy]{,10}q          0 Seq Scan            221.774 ms
 6554 trgm_regex  azjunk5  x[aeiouy]{,10}q          0 Bitmap Heap Scan      2.522 ms

 6543 HEAD        azjunk5  x[aeiouy]{1,2}q       2275 Seq Scan            134.044 ms
 6554 trgm_regex  azjunk5  x[aeiouy]{1,2}q       2275 Seq Scan            136.827 ms

 6543 HEAD        azjunk5  x[aeiouy]{1,3}q       2358 Seq Scan            135.599 ms
 6554 trgm_regex  azjunk5  x[aeiouy]{1,3}q       2358 Seq Scan            134.196 ms

 6543 HEAD        azjunk5  x[aeiouy]{1,4}q       2376 Seq Scan            138.685 ms
 6554 trgm_regex  azjunk5  x[aeiouy]{1,4}q       2376 Seq Scan            141.408 ms

 6543 HEAD        azjunk5  x[aeiouy]{2,4}q        474 Seq Scan            142.223 ms
 6554 trgm_regex  azjunk5  x[aeiouy]{2,4}q        474 Seq Scan            143.439 ms

 6543 HEAD        azjunk5  x[aeiouy]{3,4}q        103 Seq Scan            138.690 ms
 6554 trgm_regex  azjunk5  x[aeiouy]{3,4}q        103 Seq Scan            136.192 ms

 6543 HEAD        azjunk5  x[aeiouy]{1,5}q       2381 Seq Scan            140.836 ms
 6554 trgm_regex  azjunk5  x[aeiouy]{1,5}q       2381 Seq Scan            143.374 ms

 6543 HEAD        azjunk5  x[aeiouy]{2,5}q        479 Seq Scan            140.223 ms
 6554 trgm_regex  azjunk5  x[aeiouy]{2,5}q        479 Seq Scan            139.995 ms

 6543 HEAD        azjunk5  x[aeiouy]{4,5}q         23 Seq Scan            139.976 ms
 6554 trgm_regex  azjunk5  x[aeiouy]{4,5}q         23 Seq Scan            138.114 ms

 6543 HEAD        azjunk6  x[ae]q                6448 Seq Scan           1219.490 ms
 6554 trgm_regex  azjunk6  x[ae]q                6448 Bitmap Heap Scan     23.452 ms

 6543 HEAD        azjunk6  x[ae]{1}q             6448 Seq Scan           1153.371 ms
 6554 trgm_regex  azjunk6  x[ae]{1}q             6448 Bitmap Heap Scan     18.492 ms

 6543 HEAD        azjunk6  x[ae]{1,1}q           6448 Seq Scan           1189.951 ms
 6554 trgm_regex  azjunk6  x[ae]{1,1}q           6448 Bitmap Heap Scan     24.596 ms

 6543 HEAD        azjunk6  x[ae]{,2}q               0 Seq Scan           1423.474 ms
 6554 trgm_regex  azjunk6  x[ae]{,2}q               0 Bitmap Heap Scan     41.593 ms

 6543 HEAD        azjunk6  x[ae]{,10}q              0 Seq Scan           1957.142 ms
 6554 trgm_regex  azjunk6  x[ae]{,10}q              0 Bitmap Heap Scan     45.238 ms

 6543 HEAD        azjunk6  x[ae]{1,2}q           6886 Seq Scan           1253.761 ms
 6554 trgm_regex  azjunk6  x[ae]{1,2}q           6886 Bitmap Heap Scan     31.247 ms

 6543 HEAD        azjunk6  x[aei]q               9600 Seq Scan           1203.022 ms
 6554 trgm_regex  azjunk6  x[aei]q               9600 Bitmap Heap Scan     31.467 ms

 6543 HEAD        azjunk6  x[aei]{1}q            9600 Seq Scan           1213.834 ms
 6554 trgm_regex  azjunk6  x[aei]{1}q            9600 Bitmap Heap Scan     26.008 ms

 6543 HEAD        azjunk6  x[aei]{1,1}q          9600 Seq Scan           1244.158 ms
 6554 trgm_regex  azjunk6  x[aei]{1,1}q          9600 Bitmap Heap Scan     25.997 ms

 6543 HEAD        azjunk6  x[aei]{,2}q              0 Seq Scan           1432.935 ms
 6554 trgm_regex  azjunk6  x[aei]{,2}q              0 Bitmap Heap Scan     44.843 ms

 6543 HEAD        azjunk6  x[aei]{,10}q             0 Seq Scan           1940.611 ms
 6554 trgm_regex  azjunk6  x[aei]{,10}q             0 Bitmap Heap Scan     45.838 ms

 6543 HEAD        azjunk6  x[aei]{1,2}q         10604 Seq Scan           1235.913 ms
 6554 trgm_regex  azjunk6  x[aei]{1,2}q         10604 Bitmap Heap Scan     78.764 ms

 6543 HEAD        azjunk6  x[aei]{1,3}q         10704 Seq Scan           1244.960 ms
 6554 trgm_regex  azjunk6  x[aei]{1,3}q         10704 Bitmap Heap Scan    272.049 ms

 6543 HEAD        azjunk6  x[aei]q               9600 Seq Scan           1211.965 ms
 6554 trgm_regex  azjunk6  x[aei]q               9600 Bitmap Heap Scan     26.230 ms

 6543 HEAD        azjunk6  x[aei]{1}q            9600 Seq Scan           1218.431 ms
 6554 trgm_regex  azjunk6  x[aei]{1}q            9600 Bitmap Heap Scan     25.462 ms

 6543 HEAD        azjunk6  x[aei]{1,1}q          9600 Seq Scan           1250.050 ms
 6554 trgm_regex  azjunk6  x[aei]{1,1}q          9600 Bitmap Heap Scan     25.711 ms

 6543 HEAD        azjunk6  x[aei]{,2}q              0 Seq Scan           1457.725 ms
 6554 trgm_regex  azjunk6  x[aei]{,2}q              0 Bitmap Heap Scan     43.491 ms

 6543 HEAD        azjunk6  x[aei]{,10}q             0 Seq Scan           2034.895 ms
 6554 trgm_regex  azjunk6  x[aei]{,10}q             0 Bitmap Heap Scan     46.139 ms

 6543 HEAD        azjunk6  x[aei]{1,2}q         10604 Seq Scan           1250.820 ms
 6554 trgm_regex  azjunk6  x[aei]{1,2}q         10604 Bitmap Heap Scan     78.067 ms

 6543 HEAD        azjunk6  x[aei]{1,3}q         10704 Seq Scan           1265.146 ms
 6554 trgm_regex  azjunk6  x[aei]{1,3}q         10704 Bitmap Heap Scan    274.109 ms

 6543 HEAD        azjunk6  x[aeio]q             12784 Seq Scan           1235.647 ms
 6554 trgm_regex  azjunk6  x[aeio]q             12784 Bitmap Heap Scan     35.613 ms

 6543 HEAD        azjunk6  x[aeio]{1}q          12784 Seq Scan           1206.185 ms
 6554 trgm_regex  azjunk6  x[aeio]{1}q          12784 Bitmap Heap Scan     39.618 ms

 6543 HEAD        azjunk6  x[aeio]{1,1}q        12784 Seq Scan           1210.467 ms
 6554 trgm_regex  azjunk6  x[aeio]{1,1}q        12784 Bitmap Heap Scan     34.513 ms

 6543 HEAD        azjunk6  x[aeio]{,2}q             0 Seq Scan           1457.918 ms
 6554 trgm_regex  azjunk6  x[aeio]{,2}q             0 Bitmap Heap Scan     55.732 ms

 6543 HEAD        azjunk6  x[aeio]{,10}q            0 Seq Scan           2104.860 ms
 6554 trgm_regex  azjunk6  x[aeio]{,10}q            0 Bitmap Heap Scan     62.129 ms

 6543 HEAD        azjunk6  x[aeio]{1,2}q        14538 Seq Scan           1286.881 ms
 6554 trgm_regex  azjunk6  x[aeio]{1,2}q        14538 Bitmap Heap Scan    182.161 ms

 6543 HEAD        azjunk6  x[aeio]{1,3}q        14761 Seq Scan           1291.199 ms
 6554 trgm_regex  azjunk6  x[aeio]{1,3}q        14761 Bitmap Heap Scan   1445.593 ms

 6543 HEAD        azjunk6  x[aeio]{1,4}q        14791 Seq Scan           1331.960 ms
 6554 trgm_regex  azjunk6  x[aeio]{1,4}q        14791 Seq Scan           1340.845 ms

 6543 HEAD        azjunk6  x[aeio]{2,4}q         2024 Seq Scan           1337.631 ms
 6554 trgm_regex  azjunk6  x[aeio]{2,4}q         2024 Seq Scan           1354.844 ms

 6543 HEAD        azjunk6  x[aeio]{3,4}q          257 Seq Scan           1321.271 ms
 6554 trgm_regex  azjunk6  x[aeio]{3,4}q          257 Seq Scan           1335.737 ms

 6543 HEAD        azjunk6  x[aeiou]q            15976 Seq Scan           1237.313 ms
 6554 trgm_regex  azjunk6  x[aeiou]q            15976 Seq Scan           1268.531 ms

 6543 HEAD        azjunk6  x[aeiou]{1}q         15976 Seq Scan           1251.777 ms
 6554 trgm_regex  azjunk6  x[aeiou]{1}q         15976 Seq Scan           1268.431 ms

 6543 HEAD        azjunk6  x[aeiou]{1,1}q       15976 Seq Scan           1243.416 ms
 6554 trgm_regex  azjunk6  x[aeiou]{1,1}q       15976 Seq Scan           1263.152 ms

 6543 HEAD        azjunk6  x[aeiou]{,2}q            0 Seq Scan           1476.587 ms
 6554 trgm_regex  azjunk6  x[aeiou]{,2}q            0 Bitmap Heap Scan     19.583 ms

 6543 HEAD        azjunk6  x[aeiou]{,10}q           0 Seq Scan           2084.845 ms
 6554 trgm_regex  azjunk6  x[aeiou]{,10}q           0 Bitmap Heap Scan     21.377 ms

 6543 HEAD        azjunk6  x[aeiou]{1,2}q       18692 Seq Scan           1302.585 ms
 6554 trgm_regex  azjunk6  x[aeiou]{1,2}q       18692 Seq Scan           1330.683 ms

 6543 HEAD        azjunk6  x[aeiou]{1,3}q       19128 Seq Scan           1290.309 ms
 6554 trgm_regex  azjunk6  x[aeiou]{1,3}q       19128 Seq Scan           1317.831 ms

 6543 HEAD        azjunk6  x[aeiou]{1,4}q       19202 Seq Scan           1347.727 ms
 6554 trgm_regex  azjunk6  x[aeiou]{1,4}q       19202 Seq Scan           1361.307 ms

 6543 HEAD        azjunk6  x[aeiou]{2,4}q        3268 Seq Scan           1362.704 ms
 6554 trgm_regex  azjunk6  x[aeiou]{2,4}q        3268 Seq Scan           1372.468 ms

 6543 HEAD        azjunk6  x[aeiou]{3,4}q         523 Seq Scan           1321.774 ms
 6554 trgm_regex  azjunk6  x[aeiou]{3,4}q         523 Seq Scan           1346.200 ms

 6543 HEAD        azjunk6  x[aeiou]{1,5}q       19214 Seq Scan           1367.949 ms
 6554 trgm_regex  azjunk6  x[aeiou]{1,5}q       19214 Seq Scan           1428.444 ms

 6543 HEAD        azjunk6  x[aeiou]{2,5}q        3280 Seq Scan           1349.375 ms
 6554 trgm_regex  azjunk6  x[aeiou]{2,5}q        3280 Seq Scan           1375.887 ms

 6543 HEAD        azjunk6  x[aeiou]{4,5}q          88 Seq Scan           1324.008 ms
 6554 trgm_regex  azjunk6  x[aeiou]{4,5}q          88 Seq Scan           1394.067 ms

 6543 HEAD        azjunk6  x[aeiouy]q           19168 Seq Scan           1262.363 ms
 6554 trgm_regex  azjunk6  x[aeiouy]q           19168 Seq Scan           1248.167 ms

 6543 HEAD        azjunk6  x[aeiouy]{1}q        19168 Seq Scan           1257.760 ms
 6554 trgm_regex  azjunk6  x[aeiouy]{1}q        19168 Seq Scan           1276.502 ms

 6543 HEAD        azjunk6  x[aeiouy]{1,1}q      19168 Seq Scan           1282.770 ms
 6554 trgm_regex  azjunk6  x[aeiouy]{1,1}q      19168 Seq Scan           1284.173 ms

 6543 HEAD        azjunk6  x[aeiouy]{,2}q           0 Seq Scan           1483.940 ms
 6554 trgm_regex  azjunk6  x[aeiouy]{,2}q           0 Bitmap Heap Scan     20.634 ms

 6543 HEAD        azjunk6  x[aeiouy]{,10}q          0 Seq Scan           2058.701 ms
 6554 trgm_regex  azjunk6  x[aeiouy]{,10}q          0 Bitmap Heap Scan     21.596 ms

 6543 HEAD        azjunk6  x[aeiouy]{1,2}q      23069 Seq Scan           1340.593 ms
 6554 trgm_regex  azjunk6  x[aeiouy]{1,2}q      23069 Seq Scan           1322.919 ms

 6543 HEAD        azjunk6  x[aeiouy]{1,3}q      23844 Seq Scan           1321.853 ms
 6554 trgm_regex  azjunk6  x[aeiouy]{1,3}q      23844 Seq Scan           1333.974 ms

 6543 HEAD        azjunk6  x[aeiouy]{1,4}q      23993 Seq Scan           1377.787 ms
 6554 trgm_regex  azjunk6  x[aeiouy]{1,4}q      23993 Seq Scan           1389.073 ms

 6543 HEAD        azjunk6  x[aeiouy]{2,4}q       4903 Seq Scan           1392.936 ms
 6554 trgm_regex  azjunk6  x[aeiouy]{2,4}q       4903 Seq Scan           1399.154 ms

 6543 HEAD        azjunk6  x[aeiouy]{3,4}q        944 Seq Scan           1342.379 ms
 6554 trgm_regex  azjunk6  x[aeiouy]{3,4}q        944 Seq Scan           1375.420 ms

 6543 HEAD        azjunk6  x[aeiouy]{1,5}q      24028 Seq Scan           1402.588 ms
 6554 trgm_regex  azjunk6  x[aeiouy]{1,5}q      24028 Seq Scan           1482.936 ms

 6543 HEAD        azjunk6  x[aeiouy]{2,5}q       4938 Seq Scan           1378.311 ms
 6554 trgm_regex  azjunk6  x[aeiouy]{2,5}q       4938 Seq Scan           1402.020 ms

 6543 HEAD        azjunk6  x[aeiouy]{4,5}q        189 Seq Scan           1348.171 ms
 6554 trgm_regex  azjunk6  x[aeiouy]{4,5}q        189 Seq Scan           1392.002 ms

 6543 HEAD        azjunk7  x[ae]q               63781 Seq Scan          11722.978 ms
 6554 trgm_regex  azjunk7  x[ae]q               63781 Bitmap Heap Scan    418.407 ms

 6543 HEAD        azjunk7  x[ae]{1}q            63781 Seq Scan          11787.311 ms
 6554 trgm_regex  azjunk7  x[ae]{1}q            63781 Bitmap Heap Scan    423.027 ms

 6543 HEAD        azjunk7  x[ae]{1,1}q          63781 Seq Scan          11902.061 ms
 6554 trgm_regex  azjunk7  x[ae]{1,1}q          63781 Bitmap Heap Scan    420.819 ms

 6543 HEAD        azjunk7  x[ae]{,2}q               0 Seq Scan          14144.148 ms
 6554 trgm_regex  azjunk7  x[ae]{,2}q               0 Bitmap Heap Scan    343.806 ms

 6543 HEAD        azjunk7  x[ae]{,10}q              0 Seq Scan          20390.872 ms
 6554 trgm_regex  azjunk7  x[ae]{,10}q              0 Bitmap Heap Scan    370.856 ms

 6543 HEAD        azjunk7  x[ae]{1,2}q          68145 Seq Scan          12569.198 ms
 6554 trgm_regex  azjunk7  x[ae]{1,2}q          68145 Bitmap Heap Scan    571.570 ms

 6543 HEAD        azjunk7  x[aei]q              95281 Seq Scan          12027.646 ms
 6554 trgm_regex  azjunk7  x[aei]q              95281 Bitmap Heap Scan    579.807 ms

 6543 HEAD        azjunk7  x[aei]{1}q           95281 Seq Scan          12213.674 ms
 6554 trgm_regex  azjunk7  x[aei]{1}q           95281 Bitmap Heap Scan    581.085 ms

 6543 HEAD        azjunk7  x[aei]{1,1}q         95281 Seq Scan          12121.898 ms
 6554 trgm_regex  azjunk7  x[aei]{1,1}q         95281 Bitmap Heap Scan    587.568 ms

 6543 HEAD        azjunk7  x[aei]{,2}q              0 Seq Scan          14519.020 ms
 6554 trgm_regex  azjunk7  x[aei]{,2}q              0 Bitmap Heap Scan    440.596 ms

 6543 HEAD        azjunk7  x[aei]{,10}q             0 Seq Scan          20829.970 ms
 6554 trgm_regex  azjunk7  x[aei]{,10}q             0 Bitmap Heap Scan    443.136 ms

 6543 HEAD        azjunk7  x[aei]{1,2}q        105054 Seq Scan          12967.634 ms
 6554 trgm_regex  azjunk7  x[aei]{1,2}q        105054 Bitmap Heap Scan   1151.202 ms

 6543 HEAD        azjunk7  x[aei]{1,3}q        106031 Seq Scan          12601.485 ms
 6554 trgm_regex  azjunk7  x[aei]{1,3}q        106031 Bitmap Heap Scan   3084.092 ms

 6543 HEAD        azjunk7  x[aei]q              95281 Seq Scan          12251.805 ms
 6554 trgm_regex  azjunk7  x[aei]q              95281 Bitmap Heap Scan    579.398 ms

 6543 HEAD        azjunk7  x[aei]{1}q           95281 Seq Scan          12251.196 ms
 6554 trgm_regex  azjunk7  x[aei]{1}q           95281 Bitmap Heap Scan    579.351 ms

 6543 HEAD        azjunk7  x[aei]{1,1}q         95281 Seq Scan          12176.216 ms
 6554 trgm_regex  azjunk7  x[aei]{1,1}q         95281 Bitmap Heap Scan    577.931 ms

 6543 HEAD        azjunk7  x[aei]{,2}q              0 Seq Scan          14632.855 ms
 6554 trgm_regex  azjunk7  x[aei]{,2}q              0 Bitmap Heap Scan    434.758 ms

 6543 HEAD        azjunk7  x[aei]{,10}q             0 Seq Scan          20637.829 ms
 6554 trgm_regex  azjunk7  x[aei]{,10}q             0 Bitmap Heap Scan    440.237 ms

 6543 HEAD        azjunk7  x[aei]{1,2}q        105054 Seq Scan          12967.108 ms
 6554 trgm_regex  azjunk7  x[aei]{1,2}q        105054 Bitmap Heap Scan   1166.260 ms

 6543 HEAD        azjunk7  x[aei]{1,3}q        106031 Seq Scan          12820.629 ms
 6554 trgm_regex  azjunk7  x[aei]{1,3}q        106031 Bitmap Heap Scan   3079.662 ms

 6543 HEAD        azjunk7  x[aeio]q            126868 Seq Scan          12535.441 ms
 6554 trgm_regex  azjunk7  x[aeio]q            126868 Bitmap Heap Scan    737.634 ms

 6543 HEAD        azjunk7  x[aeio]{1}q         126868 Seq Scan          12338.188 ms
 6554 trgm_regex  azjunk7  x[aeio]{1}q         126868 Bitmap Heap Scan    749.844 ms

 6543 HEAD        azjunk7  x[aeio]{1,1}q       126868 Seq Scan          12579.271 ms
 6554 trgm_regex  azjunk7  x[aeio]{1,1}q       126868 Bitmap Heap Scan    731.667 ms

 6543 HEAD        azjunk7  x[aeio]{,2}q             0 Seq Scan          14806.573 ms
 6554 trgm_regex  azjunk7  x[aeio]{,2}q             0 Bitmap Heap Scan    555.302 ms

 6543 HEAD        azjunk7  x[aeio]{,10}q            0 Seq Scan          22000.135 ms
 6554 trgm_regex  azjunk7  x[aeio]{,10}q            0 Bitmap Heap Scan    560.526 ms

 6543 HEAD        azjunk7  x[aeio]{1,2}q       144180 Seq Scan          12919.840 ms
 6554 trgm_regex  azjunk7  x[aeio]{1,2}q       144180 Bitmap Heap Scan   2245.885 ms

 6543 HEAD        azjunk7  x[aeio]{1,3}q       146526 Seq Scan          12807.513 ms
 6554 trgm_regex  azjunk7  x[aeio]{1,3}q       146526 Bitmap Heap Scan  15261.582 ms

 6543 HEAD        azjunk7  x[aeio]{1,4}q       146834 Seq Scan          13179.285 ms
 6554 trgm_regex  azjunk7  x[aeio]{1,4}q       146834 Seq Scan          13874.164 ms

 6543 HEAD        azjunk7  x[aeio]{2,4}q        20220 Seq Scan          13365.779 ms
 6554 trgm_regex  azjunk7  x[aeio]{2,4}q        20220 Seq Scan          13544.404 ms

 6543 HEAD        azjunk7  x[aeio]{3,4}q         2697 Seq Scan          13224.408 ms
 6554 trgm_regex  azjunk7  x[aeio]{3,4}q         2697 Seq Scan          13699.898 ms

 6543 HEAD        azjunk7  x[aeiou]q           158778 Seq Scan          12753.739 ms
 6554 trgm_regex  azjunk7  x[aeiou]q           158778 Seq Scan          12736.813 ms

 6543 HEAD        azjunk7  x[aeiou]{1}q        158778 Seq Scan          12385.108 ms
 6554 trgm_regex  azjunk7  x[aeiou]{1}q        158778 Seq Scan          12852.739 ms

 6543 HEAD        azjunk7  x[aeiou]{1,1}q      158778 Seq Scan          12665.614 ms
 6554 trgm_regex  azjunk7  x[aeiou]{1,1}q      158778 Seq Scan          12482.476 ms

 6543 HEAD        azjunk7  x[aeiou]{,2}q            0 Seq Scan          14886.647 ms
 6554 trgm_regex  azjunk7  x[aeiou]{,2}q            0 Bitmap Heap Scan    197.807 ms

 6543 HEAD        azjunk7  x[aeiou]{,10}q           0 Seq Scan          21428.416 ms
 6554 trgm_regex  azjunk7  x[aeiou]{,10}q           0 Bitmap Heap Scan    210.265 ms

 6543 HEAD        azjunk7  x[aeiou]{1,2}q      185669 Seq Scan          12896.338 ms
 6554 trgm_regex  azjunk7  x[aeiou]{1,2}q      185669 Seq Scan          13354.702 ms

 6543 HEAD        azjunk7  x[aeiou]{1,3}q      190274 Seq Scan          12730.517 ms
 6554 trgm_regex  azjunk7  x[aeiou]{1,3}q      190274 Seq Scan          13026.644 ms

 6543 HEAD        azjunk7  x[aeiou]{1,4}q      191017 Seq Scan          13664.473 ms
 6554 trgm_regex  azjunk7  x[aeiou]{1,4}q      191017 Seq Scan          13743.875 ms

 6543 HEAD        azjunk7  x[aeiou]{2,4}q       32732 Seq Scan          13360.429 ms
 6554 trgm_regex  azjunk7  x[aeiou]{2,4}q       32732 Seq Scan          13804.770 ms

 6543 HEAD        azjunk7  x[aeiou]{3,4}q        5449 Seq Scan          13170.928 ms
 6554 trgm_regex  azjunk7  x[aeiou]{3,4}q        5449 Seq Scan          13394.707 ms

 6543 HEAD        azjunk7  x[aeiou]{1,5}q      191160 Seq Scan          13591.866 ms
 6554 trgm_regex  azjunk7  x[aeiou]{1,5}q      191160 Seq Scan          14158.325 ms

 6543 HEAD        azjunk7  x[aeiou]{2,5}q       32878 Seq Scan          13507.736 ms
 6554 trgm_regex  azjunk7  x[aeiou]{2,5}q       32878 Seq Scan          13687.159 ms

 6543 HEAD        azjunk7  x[aeiou]{4,5}q         903 Seq Scan          13329.291 ms
 6554 trgm_regex  azjunk7  x[aeiou]{4,5}q         903 Seq Scan          13645.331 ms

 6543 HEAD        azjunk7  x[aeiouy]q          190245 Seq Scan          12331.375 ms
 6554 trgm_regex  azjunk7  x[aeiouy]q          190245 Seq Scan          12726.390 ms

 6543 HEAD        azjunk7  x[aeiouy]{1}q       190245 Seq Scan          12752.629 ms
 6554 trgm_regex  azjunk7  x[aeiouy]{1}q       190245 Seq Scan          12712.805 ms

 6543 HEAD        azjunk7  x[aeiouy]{1,1}q     190245 Seq Scan          12500.269 ms
 6554 trgm_regex  azjunk7  x[aeiouy]{1,1}q     190245 Seq Scan          12863.557 ms

 6543 HEAD        azjunk7  x[aeiouy]{,2}q           0 Seq Scan          14746.988 ms
 6554 trgm_regex  azjunk7  x[aeiouy]{,2}q           0 Bitmap Heap Scan    194.024 ms

 6543 HEAD        azjunk7  x[aeiouy]{,10}q          0 Seq Scan          21648.192 ms
 6554 trgm_regex  azjunk7  x[aeiouy]{,10}q          0 Bitmap Heap Scan    208.955 ms

 6543 HEAD        azjunk7  x[aeiouy]{1,2}q     228677 Seq Scan          13359.817 ms
 6554 trgm_regex  azjunk7  x[aeiouy]{1,2}q     228677 Seq Scan          13358.769 ms

 6543 HEAD        azjunk7  x[aeiouy]{1,3}q     236512 Seq Scan          13191.587 ms
 6554 trgm_regex  azjunk7  x[aeiouy]{1,3}q     236512 Seq Scan          13504.745 ms

 6543 HEAD        azjunk7  x[aeiouy]{1,4}q     238061 Seq Scan          13756.733 ms
 6554 trgm_regex  azjunk7  x[aeiouy]{1,4}q     238061 Seq Scan          13929.557 ms

 6543 HEAD        azjunk7  x[aeiouy]{2,4}q      48681 Seq Scan          13766.984 ms
 6554 trgm_regex  azjunk7  x[aeiouy]{2,4}q      48681 Seq Scan          14135.231 ms

 6543 HEAD        azjunk7  x[aeiouy]{3,4}q       9602 Seq Scan          13429.259 ms
 6554 trgm_regex  azjunk7  x[aeiouy]{3,4}q       9602 Seq Scan          13539.163 ms

 6543 HEAD        azjunk7  x[aeiouy]{1,5}q     238407 Seq Scan          13863.009 ms
 6554 trgm_regex  azjunk7  x[aeiouy]{1,5}q     238407 Seq Scan          14091.161 ms

 6543 HEAD        azjunk7  x[aeiouy]{2,5}q      49031 Seq Scan          14006.522 ms
 6554 trgm_regex  azjunk7  x[aeiouy]{2,5}q      49031 Seq Scan          14105.039 ms

 6543 HEAD        azjunk7  x[aeiouy]{4,5}q       1935 Seq Scan          13718.130 ms
 6554 trgm_regex  azjunk7  x[aeiouy]{4,5}q       1935 Seq Scan          14032.751 ms


(You asked also for testing against real text, I'll probably some of that too (although I do not
expect all that many differences).


Thanks, great work!

Erik Rijkers