i posted a reply about this earlier. This is how i think this sohuld be done:
either one more column should be added into the w3t_posts table. or use an existing column that doesn't get much use. in that column, you just say "A" or something to say that this post is archived. This post can no longer be posted to, but people can read it at will. The information is still i the database to not muck up searching and postlist showing and what not. in postlist you do something like, if "A" then show html. not showflat.php, show html. in dosearch you do the same. This will reduce server load on reading posts but not on postlist. you can go the extra mile and make an archive board, where every post in that board is archived. and no new posts can be made onto that board. and where there is zero db queries or 1 or 2. You can make a whole forum of archived posts. i made an html site for teh previous company that i worked for. The information on there catalog didn't change all that much, so i made a spider script to spider teh website and make html of everything, so the db was only queried when i ran that spider script. this can be done the same for the archiving of the posts that you are talking about.