Give the mlinks and keys tables a pageid index,
authorschwarze <schwarze@openbsd.org>
Wed, 16 Apr 2014 18:59:38 +0000 (18:59 +0000)
committerschwarze <schwarze@openbsd.org>
Wed, 16 Apr 2014 18:59:38 +0000 (18:59 +0000)
commit0150a86bc457e9c5c6a41a98113efa3dcb06aa3d
tree5f348de134bc8205e4ccb8376102843bfffd53e5
parentcf1e9de7c42bceff9237637602095889d4cff5df
Give the mlinks and keys tables a pageid index,
as suggested by jeremy@ and espie@.

The mlinks index speeds up basic apropos(1) searches by around 30%
because it speeds up the final SELECT FROM mlinks query by about 95%.
For large result sets, the overall speedup gets even larger, in the
extreme case of "apropos Nd~." by more than 90%.
The keys index finally makes the apropos(1) -O option usable: It no longer
incurs relevant extra cost, while in the past it was embarrassingly slow.

This comes at a cost:  Total database build times grow by about 5%,
and each index adds about 10% database size with -Q.  I consider that
acceptable in view of the huge apropos(1) performance gains.
The -Q database for /usr/share/man still remains below 1 MB.
usr.bin/mandoc/mandocdb.c