Tôi tự hỏi hiệu năng của truy vấn sẽ giống như sử dụng từ khóa LIKE và ký tự đại diện như giá trị so với không có mệnh đề where.Hiệu suất tương tự SQL chỉ với ký tự đại diện (%) là một giá trị
Xem xét mệnh đề where như "WHERE a LIKE '%'". Điều này sẽ khớp với tất cả các giá trị có thể có của cột 'a'. Điều này so sánh với việc không có mệnh đề where.
Lý do tôi hỏi đây là tôi có một ứng dụng có một số trường mà người dùng có thể chỉ định giá trị để tìm kiếm. Trong một số trường hợp, người dùng muốn tất cả các kết quả có thể có. Tôi hiện đang sử dụng một truy vấn như thế này:
SELECT * FROM TableName WHERE a LIKE ? AND b LIKE ?
Các giá trị của '%' và '%' có thể được cung cấp để phù hợp với tất cả các giá trị có thể cho a và b hoặc. Điều này thuận tiện vì tôi có thể sử dụng một truy vấn được đặt tên duy nhất trong ứng dụng của tôi cho việc này. Tôi tự hỏi những gì cân nhắc hiệu suất là cho việc này. Trình tối ưu hóa truy vấn có giảm LIKE '%' để chỉ khớp với tất cả không? Tôi nhận ra rằng bởi vì tôi đang sử dụng một truy vấn được đặt tên (câu lệnh chuẩn bị), điều đó cũng có thể ảnh hưởng đến câu trả lời. Tôi nhận ra câu trả lời có khả năng là cơ sở dữ liệu cụ thể. Vì vậy, cụ thể như thế nào sẽ làm việc này trong Oracle, MS SQL Server và Derby.
Cách tiếp cận thay thế cho điều này sẽ là sử dụng 3 truy vấn riêng biệt dựa trên người dùng nhập ký tự đại diện.
A là ký tự đại diện truy vấn:
SELECT * FROM TableName WHERE b LIKE ?
B là ký tự đại diện truy vấn:
SELECT * FROM TableName WHERE a LIKE ?
A và B là ký tự đại diện:
SELECT * FROM TableName
Không ký tự đại diện:
SELECT * FROM TableName WHERE a LIKE ? AND b LIKE ?
Rõ ràng có một truy vấn đơn giản nhất và dễ bảo trì nhất. Tôi chỉ muốn sử dụng một truy vấn nếu hiệu suất vẫn tốt.
Tôi chỉ có thể đề xuất kiểm tra. Nhưng tôi sẽ cố gắng để dính vào các truy vấn đơn giản. Đừng quá phức tạp, tạo ra hai cái riêng biệt. IMHO. – Nate
Tôi khuyên bạn nên đọc bài viết của Erland về điều kiện tìm kiếm động. Nó khá dài nhưng tôi nghĩ nó sẽ cung cấp cho bạn một cái nhìn rất nghiêm túc và đáng giá về chủ đề này. http://www.sommarskog.se/dyn-search-2005.html –
"Tôi tự hỏi hiệu suất của truy vấn sẽ là gì". Câu trả lời dễ dàng là: Chạy một số thử nghiệm. –