У меня есть таблица с 3 миллионами строк, которая состоит из городов, стран, в которых лежит город, и некоторых других данных.MySQL Выберите сначала конкретные значения столбца
Я хочу получить, например, ограниченные строки, где название города начинается с определенной строки, но сначала укажите те, которые лежат в определенной стране.
Я попытался их упорядочить страна <> «us», которая очень медленная, так как сервер должен сортировать все найденные строки до применения лимита.
Теперь я пришел со следующим утверждением:
(SELECT * FROM cities WHERE city LIKE "ab%" AND country = "at" LIMIT 5)
UNION
(SELECT * FROM cities WHERE city LIKE "ab%" LIMIT 5)
LIMIT 5
Это очень быстро с любой длины префикса, но это выглядит своего рода грязный.
Есть ли более эффективный способ сделать это?
Я думаю, что так же хорошо, как и получается. – Barmar
Я не следую логике запроса. Кроме того, почему вы применяете 'LIMIT 5' снаружи, когда у вас уже есть только 10 записей? –
@TimBiegeleisen Потому что он хочет всего 5 строк в конечном результате. Если из 'at' меньше 5 строк, он хочет заполнить оставшиеся слоты из других стран. – Barmar