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 (
    101022, 101023, 101024, 101025, 101026, 
    101027, 101028, 101029, 101030, 101031, 
    101032, 101033, 101034, 101035, 101107, 
    101108, 101109, 101110, 101111, 101116, 
    101117, 101118, 101119, 101120, 101125, 
    101126, 101127, 101128, 101129, 101509, 
    101510, 101511, 101512, 101513, 101518, 
    101519, 101520, 101521, 101522, 101527, 
    101528, 101529, 101530, 101531, 101547, 
    101548, 101549, 101550, 101551, 101556, 
    101557, 101558, 101559, 101560, 101565, 
    101566, 101567, 101568, 101569, 101794, 
    101795, 101796, 101797, 101798, 101799, 
    101800, 101801, 101802, 101803, 101804, 
    101805, 101806, 101807, 101808, 101809, 
    101810, 101811, 101812, 101813
  )

Query time 0.00062

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 (101022,101023,101024,101025,101026,101027,101028,101029,101030,101031,101032,101033,101034,101035,101107,101108,101109,101110,101111,101116,101117,101118,101119,101120,101125,101126,101127,101128,101129,101509,101510,101511,101512,101513,101518,101519,101520,101521,101522,101527,101528,101529,101530,101531,101547,101548,101549,101550,101551,101556,101557,101558,101559,101560,101565,101566,101567,101568,101569,101794,101795,101796,101797,101798,101799,101800,101801,101802,101803,101804,101805,101806,101807,101808,101809,101810,101811,101812,101813))",
          "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"
          ]
        }
      }
    ]
  }
}