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 (
    88056, 88057, 88058, 87998, 88000, 88037, 
    90329, 90330, 90331, 90333, 90334, 
    90337, 90338, 90339, 90340, 90341, 
    90342, 90345, 90346, 90347, 90348, 
    87881, 88031, 87948, 88059, 88060, 
    88702, 88749, 89985, 87945, 89986, 
    88041, 86860, 87940, 87942, 87964, 
    90328, 90332, 90335, 90336, 90343, 
    90344, 88029, 88018, 88021, 88799, 
    88006, 88013, 88015, 87972, 88091, 
    88055, 88085, 88703, 88750, 87809, 
    87811, 87814, 87817, 87824, 90327, 
    88071, 88076, 88090, 87944, 88595, 
    88072, 88154, 87808, 87810, 87813, 
    87816, 87823, 87874, 87779, 87783, 
    87793, 87799, 87880, 87873, 90317, 
    90319, 90320, 88087, 88797, 87960, 
    87778, 87782, 87791, 87797, 87760, 
    88701, 88748, 88596, 88030, 88086
  )

Query time 0.00072

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 (88056,88057,88058,87998,88000,88037,90329,90330,90331,90333,90334,90337,90338,90339,90340,90341,90342,90345,90346,90347,90348,87881,88031,87948,88059,88060,88702,88749,89985,87945,89986,88041,86860,87940,87942,87964,90328,90332,90335,90336,90343,90344,88029,88018,88021,88799,88006,88013,88015,87972,88091,88055,88085,88703,88750,87809,87811,87814,87817,87824,90327,88071,88076,88090,87944,88595,88072,88154,87808,87810,87813,87816,87823,87874,87779,87783,87793,87799,87880,87873,90317,90319,90320,88087,88797,87960,87778,87782,87791,87797,87760,88701,88748,88596,88030,88086))",
          "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"
          ]
        }
      }
    ]
  }
}