Tôi đang sử dụng Spring NamedParameterJdbcTemplate để tìm nạp một số giá trị từ một bảng. Đối với một số lý do, truy vấn chạy rất chậm trong ứng dụng Java của tôi như trái ngược với việc chạy cùng một truy vấn trên SQL Management Studio. Tôi cũng nhận thấy trong hồ sơ, các báo cáo chuẩn bị không được tái sử dụng. Nếu tôi chạy cùng một truy vấn trong ứng dụng JAVA của tôi nhiều lần, tôi thấy các câu lệnh chuẩn bị khác nhau đang được thực thi. Vì vậy, không chắc chắn lý do tại sao các báo cáo không được tái sử dụng. Hiệu năng có chậm không vì tôi đang sử dụng mệnh đề IN trong truy vấn của mình?Spring NamedParameterJDBCTiếp tục sử dụng lại các câu lệnh đã chuẩn bị
Đây là mẫu java mã của tôi
StringBuilder vQuery = new StringBuilder();
vQuery.append(" SELECT SUM(Qty) FROM vDemand");
vQuery.append(" WHERE ProductID = :ProductID");
vQuery.append(" AND [Date] >= :StartDate AND [Date] <= :EndDate");
vQuery.append(" AND CustomerID IN (:CustomerID)");
MapSqlParameterSource vNamedParameters = new MapSqlParameterSource();
vNamedParameters.addValue("ProductID", aProductID);
vNamedParameters.addValue("CustomerID", aCustomerlIDs);
vNamedParameters.addValue("StartDate", aDate, Types.TIMESTAMP);
vNamedParameters.addValue("EndDate", aDate, Types.TIMESTAMP);
int vTotalQuantity = this.getNamedParameterJdbcTemplate().queryForInt(vQuery.toString(), vNamedParameters);
return vTotalQuantity;
Thanks.Điều lạ tôi thấy là ngay cả đối với một truy vấn duy nhất, thời gian chạy là khoảng 50 lần nhiều hơn thời gian chạy trong studio quản lý máy chủ sql. Tôi sẽ cố gắng loại bỏ các tham số đã đặt tên và xem liệu sql thẳng có khắc phục được sự cố không. cảm ơn một lần nữa. – user320587
Tôi nghĩ rằng đó là một vấn đề khác, hãy kiểm tra cấu hình trình điều khiển jdbc của bạn. Tạo một dự án mới với trình điều khiển và phương thức chính chỉ thực hiện truy vấn, sql đơn giản. 50 lần chậm hơn là quá nhiều. – Luciano