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 (
    99396, 99397, 99398, 100358, 101872, 
    101873, 101874, 101875, 101876, 101877, 
    101878, 101879, 101880, 101881, 101882, 
    101883, 101884, 101885, 101886, 101887, 
    101888, 101889, 101890, 101891, 101892, 
    101893, 101894, 101895, 101896, 101897, 
    101898, 101899, 101900, 101901, 101902, 
    101903, 101904, 101905, 101906, 101907, 
    101908, 101909, 101910, 101911, 101912, 
    101913, 101914, 101915, 101916, 101917, 
    101918, 101919, 101920, 101921, 101922, 
    101923, 101924, 101925, 101926, 101927, 
    101932, 101933, 101934, 101935, 101936, 
    101937, 101938, 101939, 101940, 101941, 
    101942, 101943, 101944, 101945, 101946, 
    101947, 101948, 101949, 101950, 101951
  )

Query time 0.00081

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 (99396,99397,99398,100358,101872,101873,101874,101875,101876,101877,101878,101879,101880,101881,101882,101883,101884,101885,101886,101887,101888,101889,101890,101891,101892,101893,101894,101895,101896,101897,101898,101899,101900,101901,101902,101903,101904,101905,101906,101907,101908,101909,101910,101911,101912,101913,101914,101915,101916,101917,101918,101919,101920,101921,101922,101923,101924,101925,101926,101927,101932,101933,101934,101935,101936,101937,101938,101939,101940,101941,101942,101943,101944,101945,101946,101947,101948,101949,101950,101951))",
          "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"
          ]
        }
      }
    ]
  }
}