SELECT 
  AVG (dr.rating_value) 
FROM 
  cscart_discussion_rating AS dr 
  LEFT JOIN cscart_discussion_posts AS dp ON dp.post_id = dr.post_id 
  LEFT JOIN cscart_discussion AS d ON d.thread_id = dp.thread_id 
WHERE 
  d.object_id = 671 
  AND d.object_type = 'M' 
  AND type IN ('B', 'R') 
  AND dp.status = 'A' 
  AND dr.rating_value > 0

Query time 0.00059

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "1.32"
    },
    "nested_loop": [
      {
        "table": {
          "table_name": "d",
          "access_type": "const",
          "possible_keys": [
            "PRIMARY",
            "object_id"
          ],
          "key": "object_id",
          "used_key_parts": [
            "object_id",
            "object_type"
          ],
          "key_length": "6",
          "ref": [
            "const",
            "const"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 1,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "0.00",
            "eval_cost": "0.20",
            "prefix_cost": "0.00",
            "data_read_per_join": "24"
          },
          "used_columns": [
            "thread_id",
            "object_id",
            "object_type",
            "type"
          ]
        }
      },
      {
        "table": {
          "table_name": "dp",
          "access_type": "ref",
          "possible_keys": [
            "PRIMARY",
            "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",
          "index_condition": "(`webmarco`.`dp`.`post_id` is not null)",
          "cost_info": {
            "read_cost": "1.00",
            "eval_cost": "0.02",
            "prefix_cost": "1.20",
            "data_read_per_join": "44"
          },
          "used_columns": [
            "post_id",
            "thread_id",
            "status"
          ],
          "attached_condition": "(`webmarco`.`dp`.`status` = 'A')"
        }
      },
      {
        "table": {
          "table_name": "dr",
          "access_type": "eq_ref",
          "possible_keys": [
            "PRIMARY"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "post_id"
          ],
          "key_length": "3",
          "ref": [
            "webmarco.dp.post_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 0,
          "filtered": "33.33",
          "cost_info": {
            "read_cost": "0.10",
            "eval_cost": "0.01",
            "prefix_cost": "1.32",
            "data_read_per_join": "0"
          },
          "used_columns": [
            "rating_value",
            "post_id"
          ],
          "attached_condition": "(`webmarco`.`dr`.`rating_value` > 0)"
        }
      }
    ]
  }
}

Result

AVG (dr.rating_value)