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 (
    358369, 358728, 358826, 352229, 352514, 
    354424, 354429, 357436, 357598, 357601, 
    358801, 350114, 355753, 357812, 352323, 
    354368, 354613, 351386, 351396, 351532, 
    352624, 356082, 356464, 357453, 358599, 
    358840, 352233, 354354, 356667, 358408, 
    358457, 358990, 352358, 352615, 354985, 
    358958, 358991, 352429, 355020, 355042, 
    355133, 356592, 356676, 357463, 358831, 
    358984, 351403, 351620, 357142, 358382, 
    351598, 352319, 354856, 355668, 357528, 
    351323, 351370, 351435, 352362, 354450, 
    354648, 354877, 356424, 356425, 357146, 
    358620, 358920, 351473, 352353, 352591, 
    354399, 354644, 354769, 355676, 355678, 
    355747, 358811, 352510, 354970, 356100, 
    356289, 356603, 358849, 352350, 352586, 
    355053, 356050, 357467, 358275, 358462, 
    358882, 351285, 351474, 354440, 354517, 
    355086, 355612, 355852, 355866, 356002
  )

Query time 0.00196

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 (358369,358728,358826,352229,352514,354424,354429,357436,357598,357601,358801,350114,355753,357812,352323,354368,354613,351386,351396,351532,352624,356082,356464,357453,358599,358840,352233,354354,356667,358408,358457,358990,352358,352615,354985,358958,358991,352429,355020,355042,355133,356592,356676,357463,358831,358984,351403,351620,357142,358382,351598,352319,354856,355668,357528,351323,351370,351435,352362,354450,354648,354877,356424,356425,357146,358620,358920,351473,352353,352591,354399,354644,354769,355676,355678,355747,358811,352510,354970,356100,356289,356603,358849,352350,352586,355053,356050,357467,358275,358462,358882,351285,351474,354440,354517,355086,355612,355852,355866,356002))"
        }
      },
      {
        "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"
          ]
        }
      }
    ]
  }
}