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

Nhà tiên tri. Ngăn hợp nhất truy vấn phụ và điều kiện truy vấn chính

ROWNUM là cách an toàn nhất để ngăn chặn chuyển đổi trình tối ưu hóa và đảm bảo an toàn cho kiểu. Sử dụng ROWNUM khiến Oracle nghĩ rằng thứ tự hàng quan trọng và ngăn chặn những thứ như đẩy vị từ và hợp nhất xem.

select *
from
(
   select id, value, rownum --Add ROWNUM for type safety.
   from eav
   where attr like 'sal%' 
)
where to_number(value) > 5000;

Có nhiều cách khác để làm điều này nhưng không có cách nào trong số đó là đáng tin cậy. Đừng bận tâm với các dạng xem nội tuyến đơn giản, các biểu thức bảng phổ biến, CASE , thứ tự vị ngữ, hoặc gợi ý. Những phương pháp phổ biến đó không đáng tin cậy và tôi đã thấy tất cả chúng đều thất bại.

Giải pháp lâu dài tốt nhất là thay đổi bảng EAV để có một cột khác cho từng loại, như tôi mô tả trong câu trả lời này . Hãy sửa lỗi này ngay bây giờ nếu không các nhà phát triển trong tương lai sẽ nguyền rủa tên bạn khi họ phải viết các truy vấn phức tạp để tránh lỗi nhập.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. java.sql.SQLException:đối số không hợp lệ trong cuộc gọi

  2. Có kiểu boolean nào trong cơ sở dữ liệu Oracle không?

  3. Oracle OSM - XQuery không lặp lại

  4. Cách thay thế ' hoặc bất kỳ ký tự đặc biệt nào khi sử dụng XMLELEMENT Oracle

  5. Oracle sau khi cập nhật kích hoạt tạo liên kết cơ sở dữ liệu công khai