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

Thứ tự của các bảng trong các phép nối thẳng, không có chỉ thị gợi ý, có ảnh hưởng đến hiệu suất không?

Trả lời câu hỏi của bạn - Có, Thứ tự của bàn tạo ra sự khác biệt khi tham gia.

Bạn cũng có thể cho trình tối ưu hóa biết về kế hoạch thực thi.

Gợi ý ORDERED khiến Oracle nối các bảng theo thứ tự mà chúng xuất hiện trong mệnh đề FROM.

Ví dụ:câu lệnh này nối bảng TAB1 với bảng TAB2 và sau đó nối kết quả với bảng TAB3:

 SELECT /*+ ORDERED */ TAB1.COL1, TAB2.COL2, TAB3.COL3
     FROM TAB1, TAB2, TAB3
    WHERE TAB1.COL1 = TAB2.COL1
         AND TAB2.COL1 = TAB3.COL1;

Nếu bạn bỏ qua gợi ý ORDERED khỏi câu lệnh SQL thực hiện phép nối, trình tối ưu hóa sẽ chọn thứ tự nối các bảng. Bạn có thể muốn sử dụng gợi ý ORDERED để chỉ định thứ tự nối nếu bạn biết điều gì đó về số hàng được chọn từ mỗi bảng mà trình tối ưu hóa không có. Thông tin như vậy sẽ cho phép bạn chọn bảng bên trong và bảng bên ngoài tốt hơn so với trình tối ưu hóa có thể.

Thông thường, nếu bạn phân tích các bảng, trình tối ưu hóa sẽ chọn một kế hoạch sao hiệu quả. Bạn cũng có thể sử dụng các gợi ý để cải thiện kế hoạch. Phương pháp chính xác nhất là sắp xếp thứ tự các bảng trong mệnh đề FROM theo thứ tự của các khóa trong chỉ mục, cuối cùng là bảng lớn. Sau đó, sử dụng các gợi ý sau:

/*+ ORDERED USE_NL(FACTS) INDEX(FACTS FACT_CONCAT) */


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết quả này chỉ là tập hợp kết quả chuyển tiếp, việc gọi rewind () sau khi chuyển tiếp không được hỗ trợ - Zend

  2. Nhận tên cột được cập nhật hiện tại để sử dụng trong trình kích hoạt

  3. Nhiều tùy chọn hộp kiểm được lưu trữ vào một trường duy nhất trong cơ sở dữ liệu

  4. Cách hết thời gian chờ truy vấn mysql ++ trong c ++

  5. Điểm của việc tuần tự hóa các mảng để lưu trữ chúng trong db là gì?