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 (
    87532, 88448, 88465, 88481, 88784, 88171, 
    88219, 88785, 84772, 84785, 84794, 
    85668, 85688, 85700, 85712, 88769, 
    87546, 87549, 88402, 88405, 85676, 
    84776, 88197, 88209, 87515, 87531, 
    89109, 89116, 88195, 88207, 88768, 
    88449, 88466, 88482, 88690, 88737, 
    89108, 89115, 88675, 88722, 90834, 
    88447, 88464, 88480, 88691, 88738, 
    87548, 88767, 88583, 88674, 88721, 
    88582, 90833, 88545, 88403, 88765, 
    88566, 87617, 87625, 88673, 88720, 
    88401, 88565, 88564, 87636, 89107, 
    89114, 90832, 87621, 87623, 88671, 
    88718, 87635, 87638, 87640, 87632, 
    88561, 87637
  )

Query time 0.00048

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 (87532,88448,88465,88481,88784,88171,88219,88785,84772,84785,84794,85668,85688,85700,85712,88769,87546,87549,88402,88405,85676,84776,88197,88209,87515,87531,89109,89116,88195,88207,88768,88449,88466,88482,88690,88737,89108,89115,88675,88722,90834,88447,88464,88480,88691,88738,87548,88767,88583,88674,88721,88582,90833,88545,88403,88765,88566,87617,87625,88673,88720,88401,88565,88564,87636,89107,89114,90832,87621,87623,88671,88718,87635,87638,87640,87632,88561,87637))",
          "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"
          ]
        }
      }
    ]
  }
}