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 (
    357695, 350166, 351109, 351665, 351706, 
    352131, 353415, 353261, 353262, 353529, 
    355225, 355897, 356720, 349870, 351281, 
    352960, 354535, 356589, 357067, 358172, 
    353285, 353428, 355773, 356995, 359348, 
    353111, 353326, 353388, 353536, 354023, 
    354674, 355194, 356783, 357083, 359109, 
    349880, 350707, 352099, 354960, 350274, 
    350691, 350802, 351185, 353048, 353568, 
    353657, 353844, 358809, 358992, 349923, 
    350701, 351217, 353080, 353113, 353335, 
    354706, 355502, 357314, 357321, 350186, 
    350371, 355570, 356147, 352885, 352972, 
    353280, 354363, 354803, 350997, 354115, 
    354961, 356912, 350111, 351058, 353682, 
    353820, 359256, 349861, 350443, 351052, 
    351611, 355526, 350239, 350735, 353604, 
    355345, 355513, 358031, 350430, 351500, 
    351729, 352537, 353404, 353905, 353991, 
    355478, 355718, 357205, 357787, 350485
  )

Query time 0.00154

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 (357695,350166,351109,351665,351706,352131,353415,353261,353262,353529,355225,355897,356720,349870,351281,352960,354535,356589,357067,358172,353285,353428,355773,356995,359348,353111,353326,353388,353536,354023,354674,355194,356783,357083,359109,349880,350707,352099,354960,350274,350691,350802,351185,353048,353568,353657,353844,358809,358992,349923,350701,351217,353080,353113,353335,354706,355502,357314,357321,350186,350371,355570,356147,352885,352972,353280,354363,354803,350997,354115,354961,356912,350111,351058,353682,353820,359256,349861,350443,351052,351611,355526,350239,350735,353604,355345,355513,358031,350430,351500,351729,352537,353404,353905,353991,355478,355718,357205,357787,350485))"
        }
      },
      {
        "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"
          ]
        }
      }
    ]
  }
}