На самом деле довольно сложно понять желаемый результат .... но я думаю, что это может идти в правильном направлении?
(SELECT name
FROM table
WHERE name = 'mark'
LIMIT 5000)
UNION
(SELECT name
FROM table
WHERE name != 'mark'
ORDER BY name)
Сначала будет получено до 5000 записей с первым именем mark
, затем будет получен остаток - при необходимости вы можете добавить limit
ко второму запросу ... используя UNION
Для повышения производительности убедитесь, что столбцы, используемые ORDER BY
и WHERE
, проиндексированы соответственно