title: Practical limit to length of SQL query (specifically MySQL)
body: <p>Is it particularly bad to have a very, very large SQL query with lots of (potentially redundant) WHERE clauses?</p>
  
  <p>For example, here's a query I've generated from my web application with everything turned off, which should be the largest possible query for this program to generate:</p>
  
  <pre><code>SELECT * 
  FROM 4e_magic_items 
  INNER JOIN 4e_magic_item_levels 
    ON 4e_magic_items.id = 4e_magic_item_levels.itemid 
  INNER JOIN 4e_monster_sources 
    ON 4e_magic_items.source = 4e_monster_sources.id 
  WHERE (itemlevel BETWEEN 1 AND 30)  
    AND source!=16 AND source!=2 AND source!=5 
    AND source!=13 AND source!=15 AND source!=3 
    AND source!=4 AND source!=12 AND source!=7 
    AND source!=14 AND source!=11 AND source!=10 
    AND source!=8 AND source!=1 AND source!=6 
    AND source!=9  AND type!='Arms' AND type!='Feet' 
    AND type!='Hands' AND type!='Head' 
    AND type!='Neck' AND type!='Orb' 
    AND type!='Potion' AND type!='Ring' 
    AND type!='Rod' AND type!='Staff' 
    AND type!='Symbol' AND type!='Waist' 
    AND type!='Wand' AND type!='Wondrous Item' 
    AND type!='Alchemical Item' AND type!='Elixir' 
    AND type!='Reagent' AND type!='Whetstone' 
    AND type!='Other Consumable' AND type!='Companion' 
    AND type!='Mount' AND (type!='Armor' OR (false )) 
    AND (type!='Weapon' OR (false )) 
   ORDER BY type ASC, itemlevel ASC, name ASC
  </code></pre>
  
  <p>It seems to work well enough, but it's also not particularly high traffic (a few hundred hits a day or so), and I wonder if it would be worth the effort to try and optimize the queries to remove redundancies and such.</p>