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 (
    86936, 86937, 86938, 86939, 86940, 86941, 
    86942, 86997, 86998, 86999, 87000, 
    87001, 87002, 87003, 87058, 87059, 
    87060, 87061, 87062, 87063, 87064, 
    87116, 87117, 87118, 87119, 87120, 
    87121, 87122, 86930, 86931, 86932, 
    86933, 86934, 86935, 86991, 86992, 
    86993, 86994, 86995, 86996, 87052, 
    87053, 87054, 87055, 87056, 87057, 
    87110, 87111, 87112, 87113, 87114, 
    87115, 86957, 86958, 86959, 86960, 
    86961, 86962, 87018, 87019, 87020, 
    87021, 87022, 87023, 87079, 87080, 
    87081, 87082, 87083, 87084, 87130, 
    87131, 87132, 87133, 87134, 87135, 
    86950, 86951, 86952, 86953, 86954, 
    86955, 86956, 87011, 87012, 87013, 
    87014, 87015, 87016, 87017, 87072, 
    87073, 87074, 87075, 87076, 87077
  )

Query time 0.00080

JSON explain

{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "1.05"
    },
    "nested_loop": [
      {
        "table": {
          "table_name": "f",
          "access_type": "ALL",
          "possible_keys": [
            "idx_group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 1,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "0.25",
            "eval_cost": "0.10",
            "prefix_cost": "0.35",
            "data_read_per_join": "104"
          },
          "used_columns": [
            "feature_id",
            "purpose",
            "group_id"
          ]
        }
      },
      {
        "table": {
          "table_name": "g",
          "access_type": "eq_ref",
          "possible_keys": [
            "PRIMARY"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "id"
          ],
          "key_length": "3",
          "ref": [
            "nuie_scalesta_net.f.group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 1,
          "filtered": "100.00",
          "cost_info": {
            "read_cost": "0.25",
            "eval_cost": "0.10",
            "prefix_cost": "0.70",
            "data_read_per_join": "400"
          },
          "used_columns": [
            "id",
            "code"
          ]
        }
      },
      {
        "table": {
          "table_name": "p",
          "access_type": "ref",
          "possible_keys": [
            "PRIMARY",
            "idx_group_id"
          ],
          "key": "idx_group_id",
          "used_key_parts": [
            "group_id"
          ],
          "key_length": "3",
          "ref": [
            "nuie_scalesta_net.f.group_id"
          ],
          "rows_examined_per_scan": 1,
          "rows_produced_per_join": 1,
          "filtered": "100.00",
          "index_condition": "(`nuie_scalesta_net`.`p`.`product_id` in (86936,86937,86938,86939,86940,86941,86942,86997,86998,86999,87000,87001,87002,87003,87058,87059,87060,87061,87062,87063,87064,87116,87117,87118,87119,87120,87121,87122,86930,86931,86932,86933,86934,86935,86991,86992,86993,86994,86995,86996,87052,87053,87054,87055,87056,87057,87110,87111,87112,87113,87114,87115,86957,86958,86959,86960,86961,86962,87018,87019,87020,87021,87022,87023,87079,87080,87081,87082,87083,87084,87130,87131,87132,87133,87134,87135,86950,86951,86952,86953,86954,86955,86956,87011,87012,87013,87014,87015,87016,87017,87072,87073,87074,87075,87076,87077))",
          "cost_info": {
            "read_cost": "0.25",
            "eval_cost": "0.10",
            "prefix_cost": "1.05",
            "data_read_per_join": "16"
          },
          "used_columns": [
            "product_id",
            "parent_product_id",
            "group_id"
          ]
        }
      }
    ]
  }
}