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 (
    98215, 98216, 98217, 98218, 98219, 98220, 
    98221, 98222, 98223, 98258, 98259, 
    98260, 98261, 98262, 98263, 98264, 
    98265, 98266, 98267, 98268, 98269, 
    98270, 98271, 98272, 98273, 98290, 
    98291, 98292, 98293, 98294, 98295, 
    98296, 98297, 98298, 98299, 98300, 
    98301, 98302, 98303, 98304, 98305, 
    98306, 98307, 98308, 98309, 98310, 
    98311, 98312, 98313, 98322, 98323, 
    98391, 98392, 98393, 98394, 98395, 
    98396, 98397, 98398, 98399, 98400, 
    98401, 98402, 98403, 98404, 98405, 
    98406, 98411, 98412, 98413, 98421, 
    98422, 98424, 98425, 98426, 98427, 
    98428, 98429, 98432, 98433, 98434, 
    98435, 98436, 98437, 98438, 98439, 
    98440, 98441, 98442, 98443, 98446, 
    98447, 98449, 98450, 98451, 98452
  )

Query time 0.00027

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 (98215,98216,98217,98218,98219,98220,98221,98222,98223,98258,98259,98260,98261,98262,98263,98264,98265,98266,98267,98268,98269,98270,98271,98272,98273,98290,98291,98292,98293,98294,98295,98296,98297,98298,98299,98300,98301,98302,98303,98304,98305,98306,98307,98308,98309,98310,98311,98312,98313,98322,98323,98391,98392,98393,98394,98395,98396,98397,98398,98399,98400,98401,98402,98403,98404,98405,98406,98411,98412,98413,98421,98422,98424,98425,98426,98427,98428,98429,98432,98433,98434,98435,98436,98437,98438,98439,98440,98441,98442,98443,98446,98447,98449,98450,98451,98452))",
          "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"
          ]
        }
      }
    ]
  }
}