#php #sql #count #while-loop #limit
#php #sql #количество #while-цикл #ограничение
Вопрос:
Я просматривал Stack Overflow, пытаясь найти, как ограничить SQL-запрос циклом while, и я наткнулся на этот код.
$count = 0;
while ($count < 4 amp;amp; $info = mysql_fetch_assoc($result)) {
//stuff
$count ;
}
Вопрос 1: В чем разница между этим кодом и использованием LIMIT
предложения SQL?
Вопрос 2: По какой причине кто-то захочет использовать этот код, а не использовать LIMIT
?
Ответ №1:
-
С помощью этого кода сервер MySQL отправит все результаты клиенту, но клиент игнорирует все после 4-й строки. Таким образом, серверу приходится выполнять больше работы, и между клиентом и сервером будет использоваться больше пропускной способности.
-
Они могут захотеть использовать
mysql_num_rows()
, чтобы узнать, сколько всего строк было выбрано, даже если они хотят отобразить только первые 4. Однако MySQL предоставляет способ сделать это сLIMIT
помощью — вы можете поместитьSQL_CALC_FOUND_ROWS
параметр вSELECT
предложение, а затем использоватьSELECT FOUND_ROWS()
для получения общего количества строк. Так что нет веской причины, кроме того, что они не знают об этой функции.
Ответ №2:
Все, что сказал @Barmar, правильно. Выполнение подобного кода вызовет множество проблем, поскольку ваши результирующие наборы начнут расти. Пусть база данных делает то, что умеет делать, пусть она предоставляет лимит результатов, которые вы хотите / нуждаетесь. Просто подумайте, что происходит, когда вы выполняете предложение SELECT без ОГРАНИЧЕНИЯ в клиенте командной строки, где тысячи rows…it просто продолжается и продолжается.
Еще одна вещь, я бы не рекомендовал использовать mysql_num_rows() как устаревшую функцию. С таким же успехом можно использовать mysqli или PDO.