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 (
    87148, 87149, 87150, 87151, 87152, 87153, 
    87286, 87154, 87155, 87156, 87157, 
    87158, 87159, 87287, 87142, 87143, 
    87144, 87145, 87146, 87147, 87285, 
    87172, 87173, 87174, 87175, 87176, 
    87177, 87160, 87161, 87162, 87163, 
    87164, 87165, 87166, 87167, 87168, 
    87169, 87170, 87171, 87136, 87137, 
    87138, 87139, 87140, 87141, 87284, 
    88062, 84701, 88959, 88960, 88962, 
    85801, 85802, 84700, 88961, 85800, 
    88064, 88957, 88958, 88942, 88969, 
    88970, 88973, 88974, 88967, 88968, 
    88971, 88972, 88955, 88956, 88953, 
    88954, 87879, 89976, 89977, 89978, 
    84704, 84707, 91054, 89979, 89980, 
    89981, 89173, 89987, 88066, 88509, 
    88513, 88950, 88951, 88952, 90321, 
    90322, 87957, 88065, 88142, 88145
  )

Query time 0.00085

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 (87148,87149,87150,87151,87152,87153,87286,87154,87155,87156,87157,87158,87159,87287,87142,87143,87144,87145,87146,87147,87285,87172,87173,87174,87175,87176,87177,87160,87161,87162,87163,87164,87165,87166,87167,87168,87169,87170,87171,87136,87137,87138,87139,87140,87141,87284,88062,84701,88959,88960,88962,85801,85802,84700,88961,85800,88064,88957,88958,88942,88969,88970,88973,88974,88967,88968,88971,88972,88955,88956,88953,88954,87879,89976,89977,89978,84704,84707,91054,89979,89980,89981,89173,89987,88066,88509,88513,88950,88951,88952,90321,90322,87957,88065,88142,88145))",
          "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"
          ]
        }
      }
    ]
  }
}