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

Làm cách nào để tối ưu hóa truy vấn EAV MYSQL phức tạp này?

Trên thực tế, Chibuzo đã đúng. Bắt đầu bằng cách xóa nó đi :-)) Nhưng trước đây, hãy chơi với nó một chút, đó là một bài tập rèn luyện trí não tốt, như cờ vua hay gì đó :-)

select 
    case_id,
    d_status.data_field_value as case_status,
    d_client1_name.forename_company as client1_forename_company
from db_cases 
        join db_data as d_status 
            on d_status.data_case_id = case_id 
               AND d_status.data_field_name = 'casestatus'
        join db_data as d_client1
            on d_client1.data_case_id = case_id 
               AND d_client1.data_field_name = 'client1'
        join db_names as d_client1_name
            on d_client1_name.name_id = d_client1.data_field_value

Tôi hy vọng những phép kết hợp trực tiếp không có truy vấn phụ này sẽ hiệu quả hơn nhiều, mặc dù bạn sẽ phải kiểm tra nó - thường có những điều bất ngờ trong việc tối ưu hóa.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để SQLAlchemy chèn chính xác dấu chấm lửng unicode vào bảng mySQL?

  2. Cách so sánh hai cột để tìm các bản ghi chưa khớp trong MySQL

  3. Khóa và đồng thời với MySQL

  4. chèn dữ liệu từ bảng này sang bảng khác trong mysql

  5. Phân biệt giữa 'không có hàng nào bị ảnh hưởng' và các hàng CẬP NHẬT thành công - đến cùng một giá trị (MySQL và PHP)