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 (
    96622, 96623, 96624, 96625, 96626, 96627, 
    96628, 96629, 96668, 96669, 96670, 
    96671, 96672, 96673, 96674, 96675, 
    96676, 96678, 96680, 96681, 96682, 
    96683, 96686, 96687, 96688, 96689, 
    96690, 96691, 96692, 96694, 97083, 
    97219, 97220, 97221, 97222, 97223, 
    97224, 97225, 97226, 97227, 97567, 
    97570, 97573, 97576, 97577, 97578, 
    97579, 97580, 97582, 97583, 97584, 
    97585, 97586, 97874, 97875, 97876, 
    97877, 97878, 97879, 97880, 97881, 
    97882, 97883, 97884, 97885, 97886, 
    97887, 97888, 97889, 98001, 98176, 
    98177, 98178, 98179, 98180, 98181, 
    98182, 98183, 98184, 98185, 98186, 
    98187, 98188, 98189, 98190, 98191, 
    98200, 98201, 98202, 98203, 98204, 
    98205, 98206, 98207, 98391, 98392
  )

Query time 0.00067

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "1.05"
    },
    "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": "0.25",
            "eval_cost": "0.10",
            "prefix_cost": "0.70",
            "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 (96622,96623,96624,96625,96626,96627,96628,96629,96668,96669,96670,96671,96672,96673,96674,96675,96676,96678,96680,96681,96682,96683,96686,96687,96688,96689,96690,96691,96692,96694,97083,97219,97220,97221,97222,97223,97224,97225,97226,97227,97567,97570,97573,97576,97577,97578,97579,97580,97582,97583,97584,97585,97586,97874,97875,97876,97877,97878,97879,97880,97881,97882,97883,97884,97885,97886,97887,97888,97889,98001,98176,98177,98178,98179,98180,98181,98182,98183,98184,98185,98186,98187,98188,98189,98190,98191,98200,98201,98202,98203,98204,98205,98206,98207,98391,98392))",
          "cost_info": {
            "read_cost": "0.25",
            "eval_cost": "0.10",
            "prefix_cost": "1.05",
            "data_read_per_join": "16"
          },
          "used_columns": [
            "product_id",
            "parent_product_id",
            "group_id"
          ]
        }
      }
    ]
  }
}