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

Việc sử dụng select * cho con trỏ trong PL / SQL có bị coi là lập trình tồi không?

Sử dụng select * trong mã của bạn, tôi sẽ gọi là lập trình lười biếng, với một số tác dụng phụ khó chịu. Mức độ bạn gặp phải những tác dụng phụ đó sẽ khác nhau, nhưng nó không bao giờ tích cực.

Tôi sẽ sử dụng một số điểm đã được đề cập trong các câu trả lời khác, nhưng vui lòng chỉnh sửa câu trả lời của tôi và thêm một số điểm tiêu cực hơn về việc sử dụng select * .

  1. Bạn đang chuyển nhiều dữ liệu từ công cụ SQL đến mã của mình hơn mức cần thiết, điều này có ảnh hưởng tiêu cực đến hiệu suất.

  2. Thông tin bạn lấy lại cần phải được đặt trong các biến (một biến bản ghi chẳng hạn). Điều này sẽ chiếm nhiều bộ nhớ PGA hơn mức cần thiết.

  3. Bằng cách sử dụng select * bạn sẽ không bao giờ chỉ sử dụng một chỉ mục để truy xuất thông tin mong muốn, bạn sẽ luôn phải truy cập vào bảng (miễn là không tồn tại chỉ mục chứa tất cả các cột của bảng). Một lần nữa, có ảnh hưởng tiêu cực đến hiệu suất.

  4. Ít rõ ràng hơn cho những người duy trì mã của bạn ý định của bạn là gì. Họ cần đi sâu vào mã để phát hiện tất cả các lần xuất hiện của biến bản ghi của bạn để biết những gì đang được truy xuất.

  5. Bạn sẽ không sử dụng các hàm SQL để thực hiện các phép tính mà luôn dựa vào các phép tính PL / SQL hoặc Java. Bạn có thể đang bỏ lỡ một số cải tiến SQL tuyệt vời như hàm phân tích, mệnh đề mô hình, bao thanh toán truy vấn con đệ quy và những thứ tương tự.

  6. Từ Oracle11 trở đi, các phụ thuộc đang được theo dõi ở cấp cột, nghĩa là khi bạn sử dụng select * , mã của bạn đang được đánh dấu trong từ điển dữ liệu là "phụ thuộc vào tất cả các cột" của bảng đó. Thủ tục của bạn sẽ bị vô hiệu khi có điều gì đó xảy ra với một trong các cột đó. Vì vậy, sử dụng select * có nghĩa là mã của bạn sẽ bị vô hiệu thường xuyên hơn mức cần thiết.

Một lần nữa, hãy tự do cộng điểm của riêng bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận tổng số hàng trong truy vấn phân trang

  2. các ràng buộc của trình nạp bị vi phạm khi liên kết lớp javax / xml / namespace / QName từ ứng dụng web trên Oracle 10g

  3. Sử dụng cơ sở dữ liệu Oracle với CakePHP 2.0

  4. Cập nhật toàn bộ bảng với số thứ tự trong oracle

  5. oracle deadlock cha / con và con đã được lập chỉ mục FK