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 (
    353188, 353318, 353331, 353617, 355564, 
    355846, 356171, 357164, 358109, 358551, 
    359221, 350136, 350192, 351120, 351320, 
    352533, 352856, 355248, 356333, 356751, 
    357198, 357353, 357669, 349871, 349936, 
    350304, 350336, 350478, 352942, 359007, 
    359070, 349971, 350141, 350173, 351410, 
    352752, 353252, 353945, 354249, 358936, 
    350090, 350297, 352128, 354231, 354565, 
    357954, 350275, 354640, 356880, 356885, 
    351582, 352247, 353247, 356226, 349967, 
    351680, 354699, 354757, 359389, 350367, 
    351674, 352538, 354320, 354556, 354711, 
    355153, 355407, 356163, 356236, 356301, 
    356505, 351574, 353267, 353339, 354195, 
    355279, 355870, 357005, 357564, 358180, 
    359182, 352545, 353292, 356837, 353325, 
    353484, 353766, 357084, 351511, 352208, 
    352677, 353218, 355864, 356690, 357711, 
    350036, 350503, 351579, 355538, 355784
  )

Query time 0.00159

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 (353188,353318,353331,353617,355564,355846,356171,357164,358109,358551,359221,350136,350192,351120,351320,352533,352856,355248,356333,356751,357198,357353,357669,349871,349936,350304,350336,350478,352942,359007,359070,349971,350141,350173,351410,352752,353252,353945,354249,358936,350090,350297,352128,354231,354565,357954,350275,354640,356880,356885,351582,352247,353247,356226,349967,351680,354699,354757,359389,350367,351674,352538,354320,354556,354711,355153,355407,356163,356236,356301,356505,351574,353267,353339,354195,355279,355870,357005,357564,358180,359182,352545,353292,356837,353325,353484,353766,357084,351511,352208,352677,353218,355864,356690,357711,350036,350503,351579,355538,355784))"
        }
      },
      {
        "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"
          ]
        }
      }
    ]
  }
}