Количество элементов в предложении IN (...) каждый раз равно 24
Тогда использование предложения 'IN - это путь, но предоставленный вами запрос выполняет МНОГО ненужной работы (действительно ли соединение запроса с предикатом' WHERE ', ссылающимся на te jion, действительно работает ????? ) если я не сильно ошибаюсь, это должно привести к тому же результату:
SELECT names.f_key, names.name
FROM names
WHERE names.f_key IN ( 254, 257, ..., 273, 279 );
обновление
ОК - я вижу, что второй запрос повторяется, чтобы выбрать первый элемент из имен для каждого f_key - в этом случае ....
SELECT n1.f_key, n1.name
FROM names n1
WHERE n1.f_key IN ( 254, 257, ..., 273, 279 )
AND NOT EXISTS (
SELECT 1 FROM names n2
WHERE n2.f_key=n1.f_key
AND ((n2.sort_metric>n1.sort_metric)
OR (n2.sort_metric=n1.sort_metric
AND n2.id>n1.id))
)
... или используйте трюк max concat для исключения подвыбора ...
SELECT n.f_key, SUBSTRING(
MIN(CONCAT(LPAD(sort_metric, 8, '0'),LPAD(id, 8, '0'), name)),
17) AS name
FROM names n
WHERE n.f_key IN ( 254, 257, ..., 273, 279 )
GROUP BY f_key