2015-11-29 1 views
-1

Я добавляю панель поиска для людей, чтобы искать других людей в моей базе данных, но я беспокоюсь, что поиск вернется к большому количеству строк. Я просто хочу остановить запрос и не возвращать его, если он большой.как обрабатывать запрос с большим результатом? (для строки поиска)

Как остановить запрос от продолжения, если результат будет большим (ex.100s строк)?

Есть ли лучший подход к этой проблеме?

+0

http://www.techonthenet.com/sql/select_limit.php – intboolstring

+0

не будет «ограничивать», все еще выполнит запрос? Мне просто нужен способ остановить запрос, прежде чем он соберет 100 и 100 результатов. – toastext

ответ

0

Я не думаю, что вы можете «остановить» запрос. Но если вы действительно хотите, чтобы подсчитать количество строк первого вы можете сделать это следующим образом:

Допустим, ваш поисковый запрос выглядит следующим образом

SELECT * 
FROM table_name 
WHERE name = 'some name'; 

Вы можете первым подсчитывать результаты

SELECT COUNT(*) AS num 
FROM table_name 
WHERE name = 'some name'; 

И затем выбрать только те строки (первый запрос), если Num < = 100

Чтобы объединить оба запроса в одном вы можете использовать CROSS JOIN

SELECT * 
FROM (
    SELECT COUNT(*) AS num 
    FROM table_name 
    WHERE name = 'some name' 
) num 
CROSS JOIN table_name 
WHERE num.num <= 100 
AND name = 'some name' 

Если Num является > 100 MySQL остановится, потому что нет ничего, чтобы присоединиться.

Но:

  • Его не дружественным к пользователю - лучше использовать LIMIT и использовать (или реализация) пейджинговой системы. не
  • Нет гарантии, что это будет быстрее, чем при использовании LIMIT
  • Это будет медленнее во всех случаях, когда Num < = 100
+0

Спасибо. (: num.num? – toastext

1
$sql = "SELECT * FROM Orders LIMIT 30";