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

Có cách nào tốt hơn để lấy dữ liệu từ hai bảng cùng một lúc với Sphinx / MySQL không?

Bạn không thể thực sự thoát khỏi việc không có hai truy vấn MySQL. Bạn có thể, bằng cách kết hợp chúng thành một, với UNION. Hoặc bằng cách tạo một 'bảng' kết hợp mới (một chế độ xem hoặc một chế độ xem cụ thể hóa) - nhưng thực sự không cho rằng nó xứng đáng với nỗ lực của nó. Hai truy vấn hoàn toàn ổn - như bạn nói chúng đã lập chỉ mục.

Bạn có thể sử dụng một chỉ mục nhân sư (và do đó là một truy vấn tìm kiếm) - bằng cách tạo một chỉ mục kết hợp mới. Bởi vì bạn nói rằng các khóa của bạn không phải là duy nhất, bạn sẽ phải tạo một khóa tổng hợp mới.

ví dụ ...

sql_query = SELECT userid*2 AS id, 1 AS table_id, firstname AS one, lastname as two FROM tellycards_user_data \
              UNION \
            SELECT (id*2)+1 as id, 2 AS table_id, name AS one, screenshot AS two FROM tellycards_ripples
sql_attr_unit = table_id

Điều này cung cấp cho bạn một khóa giả và một thuộc tính để xác định kết quả đến từ bảng nào. Bạn có thể sử dụng điều này để lấy bảng gốc mà nó xuất phát. (có nhiều cách khác để làm điều tương tự)

Điều này cho phép bạn chạy một truy vấn, có thể nhận được kết quả kết hợp.

... NHƯNG không thuyết phục nó là một ý tưởng tốt. Bởi vì nếu kết quả không đối xứng, bạn có thể bỏ lỡ kết quả. Giả sử có 20 kết quả phù hợp từ một bảng và 10 kết quả từ bảng khác. Giả sử bạn hiển thị 10 kết quả hàng đầu, bây giờ đã vượt quá giới hạn, kết quả từ bảng thứ hai, cũng có thể bị ẩn bên dưới bảng đầu tiên (ví dụ cực đoan, trong thực tế, hy vọng chúng xen kẽ với nhau). Hai truy vấn riêng biệt, cho phép bạn đảm bảo, nhận được MỘT SỐ kết quả từ mỗi bảng.

... vì vậy sau tất cả những điều đó. Hãy gắn bó với những gì bạn có. Tốt rồi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sự cố với OneToMany bao gồm một mệnh đề bộ lọc trong Spring jpa

  2. mysqldump:Lỗi 2020:Có gói lớn hơn byte 'max_allowed_packet' khi kết xuất bảng

  3. thực hiện quy trình được lưu trữ trong tập lệnh ứng dụng google

  4. Tôi có nên đặt các giá trị EAV trong bảng kiểu dữ liệu không?

  5. java.lang.OutofMemorySpace:Không gian đống Java trong khi tìm nạp 120 triệu hàng từ cơ sở dữ liệu trong pyspark