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

Tại sao thời gian thực hiện thủ tục được lưu trữ trong oracle lại tăng lên rất nhiều tùy thuộc vào cách nó được thực thi?

Thử lấy tham số nls từ các trường hợp khác nhau của bạn (chương trình Ide hoặc java), chúng phải khác nhau

select * from NLS_SESSION_PARAMETERS

Sau đó, bên trong quy trình cửa hàng của bạn, hãy đặt các biến để làm cho chúng bằng với trường hợp nhanh nhất.

  execute immediate 'alter session set NLS_SORT=''SPANISH''';

Khi SP của bạn có tất cả các tham số nls. Nó sẽ chạy nhanh.

Gần đây tôi đã tìm thấy một trường hợp tương tự trong phiên Alter làm chậm truy vấn thông qua Hibernate. nhưng trong trường hợp của họ, họ thay đổi các tham số de và sau đó trở nên chậm.

Tôi đã điều tra và nhận thấy rằng Các tham số NLS_COMP y NLS_SORT có thể ảnh hưởng đến cách oracle sử dụng kế hoạch thực thi cho chuỗi (khi nó đang so sánh hoặc sắp xếp thứ tự)

Khi NLS_COMP được định nghĩa là LINGUISTIC, nó sẽ sử dụng ngôn ngữ được định nghĩa trong NLS_SORT.

ví dụ:nếu NLS_COMP =LINGUISTIC và NLS_SORT =BINARI_AI câu truy vấn của bạn

select * from table where string_column like 'HI%'

nội bộ nó sẽ thực hiện

select * from table where  
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('324242432')
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('675757576')

vì vậy nếu bạn không có chỉ mục cho NLSSORT (cột, 'BINARI_AI') thì nó sẽ rất chậm.

biết rằng NLS_SORT =BINARY_AI sẽ giúp bạn đặt hàng và so sánh không phân biệt trọng âm và không phân biệt chữ hoa chữ thường.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm COMPOSE () trong Oracle

  2. ORA-00904:số nhận dạng không hợp lệ

  3. Hàm NLS_CHARSET_NAME () trong Oracle

  4. Hướng dẫn ORACLE SQL * Plus

  5. Làm thế nào để tạo hàm trong PL / SQL?