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.