SELECT 
  f.feature_id, 
  f.purpose, 
  p.product_id, 
  p.parent_product_id, 
  g.id, 
  g.code 
FROM 
  cscart_product_variation_group_features AS f 
  INNER JOIN cscart_product_variation_groups AS g ON f.group_id = g.id 
  INNER JOIN cscart_product_variation_group_products AS p ON f.group_id = p.group_id 
WHERE 
  p.product_id IN (
    99342, 99343, 99404, 99405, 99406, 99407, 
    99408, 99409, 99410, 99411, 99422, 
    99423, 99424, 99425, 99426, 99427, 
    99428, 99429, 99430, 99431, 99432, 
    99433, 99434, 99435, 99436, 99437, 
    99491, 99492, 99493, 99494, 99495, 
    99496, 99497, 99498, 99499, 99500, 
    99501, 99502, 99503, 99504, 99505, 
    99506, 99508, 99509, 99510, 99512, 
    99513, 99514, 99516, 99517, 99518, 
    99519, 99520, 99521, 99522, 99523, 
    99524, 99525, 99526, 99527, 99529, 
    99530, 99531, 99532, 99533, 99534, 
    99535, 99536, 99537, 99538, 99539, 
    99540, 99541, 99542, 99543, 99544, 
    99545, 99546, 99547, 99548, 99549, 
    99550, 99551, 99552, 99553, 99554, 
    99555, 99556, 99557, 99574, 99575, 
    99576, 100143, 100161, 100162, 100163
  )

Query time 0.00072

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "1.80"
    },
    "nested_loop": [
      {
        "table": {
          "table_name": "f",
          "access_type": "ALL",
          "possible_keys": [
            "idx_group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 1,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "0.25",
            "eval_cost": "0.10",
            "prefix_cost": "0.35",
            "data_read_per_join": "104"
          },
          "used_columns": [
            "feature_id",
            "purpose",
            "group_id"
          ]
        }
      },
      {
        "table": {
          "table_name": "g",
          "access_type": "eq_ref",
          "possible_keys": [
            "PRIMARY"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "id"
          ],
          "key_length": "3",
          "ref": [
            "nuie_scalesta_net.f.group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 1,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "1.00",
            "eval_cost": "0.10",
            "prefix_cost": "1.45",
            "data_read_per_join": "400"
          },
          "used_columns": [
            "id",
            "code"
          ]
        }
      },
      {
        "table": {
          "table_name": "p",
          "access_type": "ref",
          "possible_keys": [
            "PRIMARY",
            "idx_group_id"
          ],
          "key": "idx_group_id",
          "used_key_parts": [
            "group_id"
          ],
          "key_length": "3",
          "ref": [
            "nuie_scalesta_net.f.group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 1,
          "filtered": "100.00",
          "index_condition": "(`nuie_scalesta_net`.`p`.`product_id` in (99342,99343,99404,99405,99406,99407,99408,99409,99410,99411,99422,99423,99424,99425,99426,99427,99428,99429,99430,99431,99432,99433,99434,99435,99436,99437,99491,99492,99493,99494,99495,99496,99497,99498,99499,99500,99501,99502,99503,99504,99505,99506,99508,99509,99510,99512,99513,99514,99516,99517,99518,99519,99520,99521,99522,99523,99524,99525,99526,99527,99529,99530,99531,99532,99533,99534,99535,99536,99537,99538,99539,99540,99541,99542,99543,99544,99545,99546,99547,99548,99549,99550,99551,99552,99553,99554,99555,99556,99557,99574,99575,99576,100143,100161,100162,100163))",
          "cost_info": {
            "read_cost": "0.25",
            "eval_cost": "0.10",
            "prefix_cost": "1.80",
            "data_read_per_join": "16"
          },
          "used_columns": [
            "product_id",
            "parent_product_id",
            "group_id"
          ]
        }
      }
    ]
  }
}