SELECT 
  cscart_discussion.object_id AS product_id, 
  AVG(
    cscart_discussion_rating.rating_value
  ) AS average_rating, 
  cscart_discussion.type AS discussion_type, 
  cscart_discussion.thread_id AS discussion_thread_id 
FROM 
  cscart_discussion 
  LEFT JOIN cscart_discussion_posts ON cscart_discussion_posts.thread_id = cscart_discussion.thread_id 
  AND cscart_discussion_posts.status = "A" 
  LEFT JOIN cscart_discussion_rating ON cscart_discussion.thread_id = cscart_discussion_rating.thread_id 
  AND cscart_discussion_rating.post_id = cscart_discussion_posts.post_id 
  AND cscart_discussion_rating.rating_value != 0 
WHERE 
  cscart_discussion.object_id IN (
    99021, 99023, 99025, 99528, 99562, 99563, 
    99564, 99565, 100144, 100147, 100149, 
    100293, 100295, 100483, 100488, 100492, 
    100497, 100537, 100539, 100595, 100597, 
    100612, 100616, 100618, 100619, 100621, 
    100622, 100624, 100626, 100627, 100629, 
    100631, 100633, 100635, 100637, 100639, 
    100641, 100645, 100880, 100881, 100883, 
    100890, 100893, 100894, 100895, 100897, 
    100899, 100906
  ) 
  AND cscart_discussion.object_type = "P" 
GROUP BY 
  cscart_discussion.object_id

Query time 0.00101

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "55.46"
    },
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": false,
      "nested_loop": [
        {
          "table": {
            "table_name": "cscart_discussion",
            "access_type": "range",
            "possible_keys": [
              "object_id"
            ],
            "key": "object_id",
            "used_key_parts": [
              "object_id",
              "object_type"
            ],
            "key_length": "6",
            "rows_examined_per_scan": 48,
            "rows_produced_per_join": 48,
            "filtered": "100.00",
            "index_condition": "((`nuie_scalesta_net`.`cscart_discussion`.`object_id` in (99021,99023,99025,99528,99562,99563,99564,99565,100144,100147,100149,100293,100295,100483,100488,100492,100497,100537,100539,100595,100597,100612,100616,100618,100619,100621,100622,100624,100626,100627,100629,100631,100633,100635,100637,100639,100641,100645,100880,100881,100883,100890,100893,100894,100895,100897,100899,100906)) and (`nuie_scalesta_net`.`cscart_discussion`.`object_type` = 'P'))",
            "cost_info": {
              "read_cost": "28.81",
              "eval_cost": "4.80",
              "prefix_cost": "33.61",
              "data_read_per_join": "1K"
            },
            "used_columns": [
              "thread_id",
              "object_id",
              "object_type",
              "type"
            ]
          }
        },
        {
          "table": {
            "table_name": "cscart_discussion_posts",
            "access_type": "ref",
            "possible_keys": [
              "thread_id",
              "thread_id_2"
            ],
            "key": "thread_id",
            "used_key_parts": [
              "thread_id"
            ],
            "key_length": "3",
            "ref": [
              "nuie_scalesta_net.cscart_discussion.thread_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 48,
            "filtered": "100.00",
            "cost_info": {
              "read_cost": "12.00",
              "eval_cost": "4.80",
              "prefix_cost": "50.41",
              "data_read_per_join": "21K"
            },
            "used_columns": [
              "post_id",
              "thread_id",
              "status"
            ],
            "attached_condition": "<if>(is_not_null_compl(cscart_discussion_posts), (`nuie_scalesta_net`.`cscart_discussion_posts`.`status` = 'A'), true)"
          }
        },
        {
          "table": {
            "table_name": "cscart_discussion_rating",
            "access_type": "ALL",
            "possible_keys": [
              "PRIMARY",
              "thread_id"
            ],
            "rows_examined_per_scan": 1,
            "rows_produced_per_join": 48,
            "filtered": "100.00",
            "using_join_buffer": "hash join",
            "cost_info": {
              "read_cost": "0.25",
              "eval_cost": "4.80",
              "prefix_cost": "55.46",
              "data_read_per_join": "768"
            },
            "used_columns": [
              "rating_value",
              "post_id",
              "thread_id"
            ],
            "attached_condition": "<if>(is_not_null_compl(cscart_discussion_rating), ((`nuie_scalesta_net`.`cscart_discussion_rating`.`post_id` = `nuie_scalesta_net`.`cscart_discussion_posts`.`post_id`) and (`nuie_scalesta_net`.`cscart_discussion_rating`.`thread_id` = `nuie_scalesta_net`.`cscart_discussion`.`thread_id`) and (`nuie_scalesta_net`.`cscart_discussion_rating`.`rating_value` <> 0)), true)"
          }
        }
      ]
    }
  }
}

Result

product_id average_rating discussion_type discussion_thread_id
99021 B 107202
99023 B 107204
99025 B 107206
99528 B 107709
99562 B 107743
99563 B 107744
99564 B 107745
99565 B 107746
100144 B 108324
100147 B 108327
100149 B 108329
100293 B 108473
100295 B 108475
100483 B 108663
100488 B 108668
100492 B 108672
100497 B 108677
100537 B 108717
100539 B 108719
100595 B 108775
100597 B 108777
100612 B 108792
100616 B 108796
100618 B 108798
100619 B 108799
100621 B 108801
100622 B 108802
100624 B 108804
100626 B 108806
100627 B 108807
100629 B 108809
100631 B 108811
100633 B 108813
100635 B 108815
100637 B 108817
100639 B 108819
100641 B 108821
100645 B 108825
100880 B 109060
100881 B 109061
100883 B 109063
100890 B 109070
100893 B 109073
100894 B 109074
100895 B 109075
100897 B 109077
100899 B 109079
100906 B 109086