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 (
    3104, 3107, 6682, 6678, 104, 105, 106, 
    107, 108, 109, 110, 4013, 4014, 4015, 
    4016, 4017, 4018, 4019, 3105, 6677, 
    6686, 64, 118, 224, 225, 285, 3975, 4027, 
    4108, 4109, 4170, 4223, 203, 204, 205, 
    206, 207, 208, 209, 4087, 4088, 4089, 
    4090, 4091, 4092, 4093, 3122, 6675, 
    6696, 6703, 3118, 3111, 3124, 3112, 
    324, 6704, 6709, 4177, 338, 331, 6705, 
    3932, 3134, 3116, 3126, 6673, 6679, 
    6691, 3155, 3131, 310, 303, 3939, 317, 
    3132, 3143, 3130, 3129, 3121, 3128, 
    6681, 6695, 3098, 3115, 6690, 6700, 
    12, 13, 14, 15, 16, 17, 18, 65, 66, 67
  )

Query time 0.00088

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "201.61"
    },
    "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": 96,
          "rows_produced_per_join": 96,
          "filtered": "100.00",
          "index_condition": "(`gaseus`.`p`.`product_id` in (3104,3107,6682,6678,104,105,106,107,108,109,110,4013,4014,4015,4016,4017,4018,4019,3105,6677,6686,64,118,224,225,285,3975,4027,4108,4109,4170,4223,203,204,205,206,207,208,209,4087,4088,4089,4090,4091,4092,4093,3122,6675,6696,6703,3118,3111,3124,3112,324,6704,6709,4177,338,331,6705,3932,3134,3116,3126,6673,6679,6691,3155,3131,310,303,3939,317,3132,3143,3130,3129,3121,3128,6681,6695,3098,3115,6690,6700,12,13,14,15,16,17,18,65,66,67))",
          "cost_info": {
            "read_cost": "57.61",
            "eval_cost": "9.60",
            "prefix_cost": "67.21",
            "data_read_per_join": "1K"
          },
          "used_columns": [
            "product_id",
            "parent_product_id",
            "group_id"
          ]
        }
      },
      {
        "table": {
          "table_name": "g",
          "access_type": "eq_ref",
          "possible_keys": [
            "PRIMARY"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "id"
          ],
          "key_length": "3",
          "ref": [
            "gaseus.p.group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 96,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "24.00",
            "eval_cost": "9.60",
            "prefix_cost": "100.81",
            "data_read_per_join": "37K"
          },
          "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": [
            "gaseus.p.group_id"
          ],
          "rows_examined_per_scan": 3,
          "rows_produced_per_join": 288,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "72.00",
            "eval_cost": "28.80",
            "prefix_cost": "201.61",
            "data_read_per_join": "29K"
          },
          "used_columns": [
            "feature_id",
            "purpose",
            "group_id"
          ]
        }
      }
    ]
  }
}