SELECT 
  discussion_posts.*, 
  discussion_messages.message, 
  discussion_rating.rating_value 
FROM 
  discussion_posts 
  LEFT JOIN discussion_messages ON discussion_messages.post_id = discussion_posts.post_id 
  LEFT JOIN discussion_rating ON discussion_rating.post_id = discussion_posts.post_id 
WHERE 
  discussion_posts.thread_id = 585 
  AND discussion_posts.status = 'A' 
ORDER BY 
  discussion_posts.timestamp DESC 
LIMIT 
  0, 10

Query time 0.00358

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "0.43"
    },
    "ordering_operation": {
      "using_filesort": true,
      "nested_loop": [
        {
          "table": {
            "table_name": "discussion_posts",
            "access_type": "ref",
            "possible_keys": [
              "thread_id",
              "thread_id_2"
            ],
            "key": "thread_id",
            "used_key_parts": [
              "thread_id"
            ],
            "key_length": "3",
            "ref": [
              "const"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 0,
            "filtered": "10.00",
            "cost_info": {
              "read_cost": "0.25",
              "eval_cost": "0.01",
              "prefix_cost": "0.35",
              "data_read_per_join": "44"
            },
            "used_columns": [
              "post_id",
              "thread_id",
              "name",
              "timestamp",
              "user_id",
              "ip_address",
              "status"
            ],
            "attached_condition": "(`goimagine`.`discussion_posts`.`status` = 'A')"
          }
        },
        {
          "table": {
            "table_name": "discussion_messages",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "post_id"
            ],
            "key_length": "3",
            "ref": [
              "goimagine.discussion_posts.post_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 0,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "0.04",
              "eval_cost": "0.01",
              "prefix_cost": "0.40",
              "data_read_per_join": "2"
            },
            "used_columns": [
              "message",
              "post_id"
            ]
          }
        },
        {
          "table": {
            "table_name": "discussion_rating",
            "access_type": "eq_ref",
            "possible_keys": [
              "PRIMARY"
            ],
            "key": "PRIMARY",
            "used_key_parts": [
              "post_id"
            ],
            "key_length": "3",
            "ref": [
              "goimagine.discussion_posts.post_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 0,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "0.03",
              "eval_cost": "0.01",
              "prefix_cost": "0.44",
              "data_read_per_join": "1"
            },
            "used_columns": [
              "rating_value",
              "post_id"
            ]
          }
        }
      ]
    }
  }
}

Result

post_id thread_id name timestamp user_id ip_address status message rating_value
57 585 Julia S. 1589077020 321 617182da A I ordered a Easter Bunny dog toy for my German Shepherd and had a great experience! I was able to pick the option to not have a squeaker inside, which is awesome because I normally have to resort to buying her kid stuffed animals as she can't stand squeakers being in her toys. She got to go on an Easter basket hunt just like my kids did and she located her easter bunny all by herself and knew it was hers. She pranced around so happy and cuddled it all day. A month later she is still in love with it and it is fully intact in great condition! Thank you so much for a great product! 5