Ответ на каждый из ваших индивидуальных вопросов «зависит».
Например, рассмотрите, включаете ли вы предложение order by
, и нет индекса для столбцов, по которым вы упорядочиваете. В этом случае сервер должен найти все записи, которые удовлетворяют вашему запросу, а затем отсортировать их, прежде чем он сможет вернуть первую запись. Это вызывает долгую паузу, прежде чем вы получите свою первую запись, но вы (как правило) должны получить их довольно быстро, как только вы начнете получать.
Без условия order by
сервер обычно отправляет каждую запись как найденную, поэтому первая запись часто появляется раньше, но вы можете увидеть длинную паузу между одной записью и следующей.
Что касается просто «почему один запрос быстрее другого», многое зависит от того, какие индексы доступны и могут ли они использоваться для конкретного запроса. Например, что-то вроде some_column like '%something'
почти всегда будет довольно медленным. Ведущий «%» означает, что он не сможет использовать индекс, даже если у some_column
он есть. Поиск something%
вместо %something%
может легко быть в 100 или 1000 раз быстрее. Если вам действительно нужно первое, вы действительно хотите вместо этого использовать полнотекстовый поиск (создайте полнотекстовый индекс и используйте contains()
вместо like
.
Конечно, многое может зависеть просто от того, имеет ли база данных индекс для определенного столбца (или группы столбцов). При подходящем индексе запрос, как правило, будет намного быстрее.