title: Best way to store large dataset in SQL Server?
body: <p>I have a dataset which contains a string key field and up to 50 keywords associated with that information. Once the data has been inserted into the database there will be very few writes (INSERTS) but mostly queries for one or more keywords.</p>
  
  <p>I have read "<a href="http://www.pui.ch/phred/archives/2005/06/tagsystems-performance-tests.html" rel="nofollow noreferrer">Tagsystems: performance tests</a>" which is MySQL based and it seems 2NF appears to be a good method for implementing this, however I was wondering if anyone had experience with doing this with SQL Server 2008 and very large datasets.</p>
  
  <p>I am likely to initially have 1 million key fields which could have up to 50 keywords each.</p>
  
  <p>Would a structure of</p>
  
  <pre><code>keyfield, keyword1, keyword2, ... , keyword50
  </code></pre>
  
  <p>be the best solution or two tables</p>
  
  <pre><code>keyid
  keyfield
  | 1
  |
  | M
  keyid
  keyword
  </code></pre>
  
  <p>Be a better idea if my queries are mostly going to be looking for results that have one or more keywords?</p>