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

MySQL Có giới hạn cho InnerJoin không?

Bạn không có bất kỳ nơi nào gần giới hạn THAM GIA cho MySQL. Số lần tham gia của bạn không tệ. Tuy nhiên, việc tham gia vào một bảng dẫn xuất (truy vấn con bên trong của bạn) khi bạn đang thực hiện có thể gây ra các vấn đề về hiệu suất, vì các bảng dẫn xuất không có chỉ mục. Việc thực hiện một phép nối trên một bảng dẫn xuất không có chỉ mục có thể chậm.

Bạn nên cân nhắc việc tạo một bảng tạm thời thực sự với các chỉ mục để kết hợp hoặc tìm ra cách để tránh truy vấn con.

Một JOIN trong MySQL về cơ bản giống như thực hiện tra cứu (tìm kiếm) cho mỗi hàng đã tham gia. Vì vậy, MySQL sẽ phải thực hiện nhiều tra cứu nếu bạn đang kết hợp nhiều bản ghi. Vấn đề là số lượng bảng bạn tham gia ít hơn so với số hàng bạn tham gia có thể là một vấn đề.

Dù sao, MySQL sẽ chỉ thực hiện rất nhiều tìm kiếm trước khi nó từ bỏ và chỉ đọc toàn bộ bảng. Nó thực hiện một công việc khá tốt trong việc quyết định cái nào sẽ ít tốn kém hơn.

Có lẽ điều tốt nhất bạn có thể làm là giúp nó đoán bằng cách cập nhật thống kê chỉ mục với BẢNG PHÂN TÍCH.

Bạn có thể có một mệnh đề WHERE cho mỗi lần CHỌN. Vì vậy, truy vấn con bên trong của bạn sẽ có mệnh đề WHERE và truy vấn bên ngoài của bạn sẽ có mệnh đề WHERE và những điều này được áp dụng sau JOIN (ít nhất là về mặt logic, mặc dù MySQL nói chung sẽ áp dụng chúng trước cho hiệu suất).

Ngoài ra, tất cả những điều này giả sử bạn biết cách sử dụng các chỉ mục đúng cách.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo một bảng tạm thời trong một câu lệnh SELECT mà không có một bảng CREATE TABLE riêng biệt

  2. Cách tìm kiếm trường ngày cho một chuỗi bằng API tiêu chí JPA

  3. Mysql Tham gia bên trong với điều kiện HOẶC?

  4. Cách nối hai bảng bằng danh sách được phân tách bằng dấu phẩy trong trường nối

  5. Nhập data.sql MySQL Docker Container