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

Chỉ mục hàng không chính xác khi nhóm

Tôi đã tự tìm ra câu trả lời, phải tách truy vấn thành nhiều truy vấn con.

SELECT
    mq.*,
    @indexer := @indexer + 1 AS indexer
FROM
(
    SELECT
        p.id,
        p.tag_id,
        p.title,
        p.created_at
    FROM 
        `posts` AS p
    LEFT JOIN
        `votes` AS v
            ON p.id = v.votable_id
            AND v.votable_type = "Post"
            AND v.deleted_at IS NULL
    WHERE
        p.deleted_at IS NULL
    GROUP BY
        p.id
) AS mq
JOIN
    (SELECT @indexer := 0) AS i

Rõ ràng, điều đó đã gây ra số lượng lớn các hàng được truy cập cho truy vấn (theo EXPLAIN ), nhưng cũng cố gắng khắc phục điều đó với các chỉ số bổ sung. Câu trả lời đầy đủ cho vấn đề đó có thể được tìm thấy tại đây: Tính toán các chỉ số hàng với truy vấn con có các phép nối, kết quả là các hàng được kiểm tra A * B




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn cập nhật MySQL với tham gia bên trái và nhóm theo

  2. Khoảng cách không gian Mysql sử dụng POINT - Không hoạt động

  3. Logic truy vấn cho người mới bắt đầu sử dụng SQL với 3 bảng

  4. Ẩn kết quả trùng lặp trong truy vấn MySQL

  5. Sự cố cài đặt mysql-python (trên mac os x lion)