title: Django - Q Object much slower than doing separate queries
body: <p>I have the following model:</p>
  
  <pre><code>class Address(models.Model):
      full_address = models.CharField(max_length=80, db_index=True)
      alternative_address = models.CharField(max_length=80, db_index=True)
  </code></pre>
  
  <hr>
  
  <p>I'm querying for a particular address, which can either match <code>full_address</code> or <code>alternative_address</code>.  The obvious solution is to use a Q object.  But for some reason, using a Q object makes the query much slower.</p>
  
  <pre><code>address = '123 Main Street'
  
  # This query using Q object takes 500ms (10x slower)
  addresses = Address.objects.filter(Q(full_address__startswith=address) | Q(alternative_address__startswith=address)).values(...)
  
  # This solution, which returns the same results, takes just 50ms
  addresses1 = Address.objects.filter(full_address__startswith=address).values(...)
  addresses2 = Address.objects.filter(alternative_address__startswith=address).values(...)
  addresses = addresses1 | addresses2
  </code></pre>
  
  <hr>
  
  <p>Is this supposed to happen?  I think using a Q object in this case should be faster, not slower, right?</p>
  
  <hr>
  
  <p>EDIT: Raw SQL queries added</p>
  
  <p>Fast query.  Took about 0.002 seconds for both <code>full_address</code> and <code>alternative_address</code></p>
  
  <pre><code>SELECT 
    "testapp_address"."street",
    "testapp_address"."city",
    "testapp_address"."la",
    "testapp_address"."lo",
    "testapp_address"."id" 
  FROM "testapp_address" 
  WHERE "testapp_address"."full_address"::text LIKE \'1 Bloor St%\' 
  LIMIT 21 
  </code></pre>
  
  <p>Q Object query.  Took 0.449 seconds.</p>
  
  <pre><code>SELECT
    "testapp_address"."street",
    "testapp_address"."city",
    "testapp_address"."la",
    "testapp_address"."lo",
    "testapp_address"."id"
  FROM "testapp_address"
  WHERE (
    "testapp_address"."full_address"::text LIKE \'1 Bloor St%\'
    OR "testapp_address"."alternative_address"::text LIKE \'1 Bloor St%\'
  )
  LIMIT 21
  </code></pre>