title: Should one store a search_data tsvector in the same table or external table?
body: <p>I am implementing full text search in postgres. </p>
  
  <p>I would like to search all posts in my system. The posts fulltext index is an amalgamation of the post title and post body. </p>
  
  <p>I have two ways of achieving this: </p>
  
  <ol>
  <li>create a tsvector column in the posts table, trigger an update to it. </li>
  <li>create a second table (posts_search) with a post_id and tsvector column containing the index data. </li>
  <li>create a simple gin index ... (out of the question, cause my real world problem needs data in multiple tables for the index) </li>
  </ol>
  
  <p>What is going to perform better, considering I sometimes need to filter down the search by other attributes in the table (like <code>deleted_at is null</code> and so on).</p>
  
  <p>Is it a better approach to keep the tsvector column in the same table as the data (side effect select * now sucks) or a separate table (side effect, join required, index filtering is complicated)?</p>