Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Giới hạn thực tế đối với độ dài của truy vấn SQL (cụ thể là MySQL)

Đọc câu hỏi của bạn khiến tôi muốn chơi một game nhập vai.

Đây chắc chắn là không quá dài. Miễn là chúng được định dạng tốt, tôi muốn nói rằng giới hạn thực tế là khoảng 100 dòng. Sau đó, tốt hơn hết bạn nên chia nhỏ các truy vấn phụ thành các chế độ xem chỉ để mắt bạn không bị lé.

Tôi đã làm việc với một số truy vấn hơn 1000 dòng và rất khó để gỡ lỗi.

Nhân tiện, tôi có thể đề xuất một phiên bản được định dạng lại không? Điều này hầu hết là để chứng minh tầm quan trọng của định dạng; Tôi tin rằng điều này sẽ dễ hiểu hơn.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL 's' secure-file-priv 'không cho phép tải dữ liệu trong tệp tin, ngay cả từ thư mục an toàn được cấp phát

  2. Hộp chọn chuỗi động

  3. Hàm MySQL TRUNCATE () - Cắt bớt một số thành một số vị trí thập phân được chỉ định

  4. mysql tinyint (1) vs tinyint (2) vs tinyint (3) vs tinyint (4)

  5. Lỗi:Phương pháp hoặc hoạt động không được triển khai. trong khi Cơ sở dữ liệu MYSQL giàn giáo