title: Neo4j: label vs. indexed property?
body: <p>Suppose you're Twitter, and:</p>
  
  <ul>
  <li>You have <code>(:User)</code> and <code>(:Tweet)</code> nodes;</li>
  <li>Tweets can get flagged; and</li>
  <li>You want to <strong>query the list</strong> of flagged tweets currently awaiting moderation.</li>
  </ul>
  
  <p>You can either add a <strong>label</strong> for those tweets, e.g. <code>:AwaitingModeration</code>, or add and index a <strong>property</strong>, e.g. <code>isAwaitingModeration = true|false</code>.</p>
  
  <p>Is one option inherently better than the other?</p>
  
  <p>I know the best answer is probably to try and load test both :), but is there anything from Neo4j's implementation POV that makes one option more robust or suited for this kind of query?</p>
  
  <p>Does it depend on the volume of tweets in this state at any given moment? If it's in the 10s vs. the 1000s, does that make a difference?</p>
  
  <p>My impression is that labels are better suited for a large volume of nodes, whereas indexed properties are better for smaller volumes (ideally, unique nodes), but I'm not sure if that's actually true.</p>
  
  <p>Thanks!</p>