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 (
    431225, 431483, 431058, 431207, 431430, 
    431475, 431496, 431086, 431479, 430986, 
    431036, 431282, 431351, 431391, 431450, 
    431223, 431059, 431227, 431437, 430716, 
    431294, 431492, 430996, 431278, 431296, 
    431396, 431435, 431460, 435511, 431413, 
    430777, 431367, 431221, 431261, 431323, 
    431331, 431485, 431276, 431258, 431307, 
    431312, 431348, 431471, 431382, 431448, 
    431095, 431477, 431499, 381714, 431214, 
    431310, 431375, 431449, 431266, 431299, 
    430728, 431491, 431347, 431366, 431436, 
    431441, 431075, 431418, 431489, 430709, 
    431228, 431265, 431321, 431400, 431363, 
    431486, 431189, 430670, 431206, 431370, 
    431374, 431388, 387053, 430774, 430779, 
    431209, 431232, 431256, 431257, 431379, 
    387048, 430710, 431179, 431404, 431445, 
    430668, 431293, 431277, 431286, 431462, 
    431317, 431473, 431476, 431320, 431390
  )

Query time 0.00118

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "430.18"
    },
    "nested_loop": [
      {
        "table": {
          "table_name": "p",
          "access_type": "range",
          "possible_keys": [
            "PRIMARY",
            "idx_group_id"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "product_id"
          ],
          "key_length": "3",
          "rows_examined_per_scan": 100,
          "rows_produced_per_join": 100,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "120.12",
            "eval_cost": "20.00",
            "prefix_cost": "140.12",
            "data_read_per_join": "1K"
          },
          "used_columns": [
            "product_id",
            "parent_product_id",
            "group_id"
          ],
          "attached_condition": "(`webmarco`.`p`.`product_id` in (431225,431483,431058,431207,431430,431475,431496,431086,431479,430986,431036,431282,431351,431391,431450,431223,431059,431227,431437,430716,431294,431492,430996,431278,431296,431396,431435,431460,435511,431413,430777,431367,431221,431261,431323,431331,431485,431276,431258,431307,431312,431348,431471,431382,431448,431095,431477,431499,381714,431214,431310,431375,431449,431266,431299,430728,431491,431347,431366,431436,431441,431075,431418,431489,430709,431228,431265,431321,431400,431363,431486,431189,430670,431206,431370,431374,431388,387053,430774,430779,431209,431232,431256,431257,431379,387048,430710,431179,431404,431445,430668,431293,431277,431286,431462,431317,431473,431476,431320,431390))"
        }
      },
      {
        "table": {
          "table_name": "g",
          "access_type": "eq_ref",
          "possible_keys": [
            "PRIMARY"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "id"
          ],
          "key_length": "3",
          "ref": [
            "webmarco.p.group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 100,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "100.00",
            "eval_cost": "20.00",
            "prefix_cost": "260.12",
            "data_read_per_join": "39K"
          },
          "used_columns": [
            "id",
            "code"
          ]
        }
      },
      {
        "table": {
          "table_name": "f",
          "access_type": "ref",
          "possible_keys": [
            "idx_group_id"
          ],
          "key": "idx_group_id",
          "used_key_parts": [
            "group_id"
          ],
          "key_length": "3",
          "ref": [
            "webmarco.p.group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 141,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "141.72",
            "eval_cost": "28.34",
            "prefix_cost": "430.18",
            "data_read_per_join": "14K"
          },
          "used_columns": [
            "feature_id",
            "purpose",
            "group_id"
          ]
        }
      }
    ]
  }
}