sql >> Databasteknik >  >> RDS >> Mysql

Praktisk gräns för SQL-frågans längd (särskilt MySQL)

När jag läser din fråga blir jag sugen på att spela en RPG.

Det här är definitivt inte för långt. Så länge de är välformaterade, skulle jag säga att en praktisk gräns är cirka 100 rader. Efter det är det bättre att dela upp underfrågor i vyer bara för att hålla ögonen på varandra.

Jag har arbetat med några frågor som är över 1000 rader, och det är svårt att felsöka.

Förresten, får jag föreslå en omformaterad version? Detta är mest för att visa vikten av formatering; Jag litar på att detta kommer att bli lättare att förstå.

select *  
from
  4e_magic_items mi
 ,4e_magic_item_levels mil
 ,4e_monster_sources ms
where mi.id = mil.itemid
  and mi.source = ms.id
  and itemlevel between 1 and 30
  and source not in(16,2,5,13,15,3,4,12,7,14,11,10,8,1,6,9)  
  and type not in(
                  'Arms' ,'Feet' ,'Hands' ,'Head' ,'Neck' ,'Orb' ,
                  'Potion' ,'Ring' ,'Rod' ,'Staff' ,'Symbol' ,'Waist' ,
                  'Wand' ,'Wondrous Item' ,'Alchemical Item' ,'Elixir' ,
                  'Reagent' ,'Whetstone' ,'Other Consumable' ,'Companion' ,
                  'Mount'
                 )
  and ((type != 'Armor') or (false))
  and ((type != 'Weapon') or (false))
order by
  type asc
 ,itemlevel asc
 ,name asc

/*
Some thoughts:
==============
0 - Formatting really matters, in SQL even more than most languages.
1 - consider selecting only the columns you need, not "*"
2 - use of table aliases makes it short & clear ("MI", "MIL" in my example)
3 - joins in the WHERE clause will un-clutter your FROM clause
4 - use NOT IN for long lists
5 - logically, the last two lines can be added to the "type not in" section.
    I'm not sure why you have the "or false", but I'll assume some good reason
    and leave them here.
*/


  1. Två autoinkrementkolumner eller autoinkrement och samma värde i den andra kolumnen

  2. Python/MySQL-frågefel:`Okänd kolumn`

  3. Återanvänder du SqlCommand?

  4. PolyScale.ai – Skala MySQL &PostgreSQL med Global Caching