Các RDBM hiện đại, bao gồm cả Oracle, tối ưu hóa hầu hết các phép nối và truy vấn phụ xuống cùng một kế hoạch thực thi.
Do đó, tôi sẽ tiếp tục và viết truy vấn của bạn theo cách đơn giản nhất cho bạn và tập trung vào việc đảm bảo rằng bạn đã tối ưu hóa hoàn toàn các chỉ mục của mình.
Nếu bạn cung cấp truy vấn cuối cùng và lược đồ cơ sở dữ liệu của mình, chúng tôi có thể đưa ra các đề xuất chi tiết, bao gồm thông tin về các vấn đề khóa tiềm ẩn.
Chỉnh sửa
Dưới đây là một số mẹo chung áp dụng cho truy vấn của bạn:
- Đối với các phép kết hợp, hãy đảm bảo rằng bạn có một chỉ mục trên các cột mà bạn đang tham gia. Đảm bảo áp dụng một chỉ mục cho các cột được kết hợp trong cả hai bảng. Bạn có thể nghĩ rằng bạn chỉ cần lập chỉ mục theo một hướng, nhưng bạn nên lập chỉ mục cả hai, vì đôi khi cơ sở dữ liệu xác định rằng tốt hơn nên kết hợp theo hướng ngược lại.
- Đối với mệnh đề WHERE, hãy đảm bảo rằng bạn có chỉ mục trên các cột được đề cập trong WHERE.
- Để chèn nhiều hàng, tốt nhất là bạn có thể chèn tất cả chúng trong một truy vấn.
- Để chèn trên bảng có chỉ mục được phân nhóm, tốt nhất là bạn nên chèn các giá trị tăng dần cho chỉ mục được phân nhóm để các hàng mới được nối vào cuối dữ liệu. Điều này tránh xây dựng lại chỉ mục và thường tránh các khóa trên các bản ghi hiện có, điều này sẽ làm chậm các truy vấn CHỌN đối với các hàng hiện có. Về cơ bản, việc chèn trở nên ít gây khó chịu hơn cho những người dùng khác của hệ thống.