Скажем, у меня есть последовательность запросов, которые постепенно становятся все дороже. Я могу объединить все это с профсоюзом, но меня интересуют только первые 10 результатов, поэтому я добавляю LIMIT. Запрос выглядит примерно так:
(SELECT col1, col2 FROM table WHERE colx = 'x')
UNION
(SELECT col1, col2 FROM table WHERE colx LIKE '%x%')
UNION
(SELECT col1, col2 FROM table WHERE colx LIKE '%x%' AND unindexedcol LIKE '%y%')
LIMIT 10
Я знаю, что это не гарантированно будет первой десяткой в первом запросе, как указано в документации MySQL
UNION по умолчанию создает неупорядоченный
набор строк
но на практике получается, что результаты упорядочены, выберите 1, затем выберите 2 и т. Д., Пока не будет достигнут предел.
Так MySQL выполняет запросы последовательно и останавливается, когда он достигает предела? Если нет, то как лучше выполнить этот стиль запроса, когда требуется только подмножество результатов, и предпочтение отдается менее дорогим запросам, чтобы минимизировать время выполнения?