![]() |
|
Модераторы: skyboy |
![]()
|
|
| zhazhah |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
Здравствуйте. У меня таблица с большим объёмом данных поиск полнотекстовый. т.е в результате поискового запроса получаю очень много записей.
А проблема такая если при поиске подсчитывать общее количество найденных записей то запрос будет выполняться довольно долго что мне совсем не нужно. Тем более что поиск выполняется с limit 0,10 понятное дело что если не подсчитывать количество строк, запрос выполнится за 200-400 мс. И вот вопрос, как подсчитать количество строк только до 500 т.е если больше 500 пользователю вывести "найдено больше 500" что то на подобие Яндекса или Google ведь если бы Google подсчитывал точное количество записей то запросы точно не возвращались бы за 300мc. |
|||
|
||||
| Noviy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 29.11.2007 Репутация: нет Всего: нет |
Параметр SQL_CALC_FOUND_ROWS возвращает количество строк, которые вернул бы оператор SELECT, если бы не был указан LIMIT. Искомое количество строк можно получить при помощи SELECT FOUND_ROWS().
|
|||
|
||||
| zhazhah |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 21.3.2010 Репутация: нет Всего: нет |
Так я собственно про SQL_CALC_FOUND_ROWS и имел в виду. Проблема в том что если поисковый запрос должен будет вернуть 20-30 тыс. то это будет происходить не 200-300 мс. а 5-15 с. при 1 000 000 записей. Поэтому нужно вернуть не всё а лишь часть к примеру 500(имеется ввиду не записей, а количество записей) а пользователю выдать результат: больше 500 при этом главное что поиск очень быстрый.
Это сообщение отредактировал(а) zhazhah - 30.5.2010, 22:06 |
|||
|
||||
| IgorIV |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: нет Всего: 8 |
Я думаю, что в этом случае запрос в базу должен быть LIMIT 0, 500. Результат кешировать и выводить результат пользователю по 10-20 позиций.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |