- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
В общем, используется полнотекстовый поиск по БД.
Для навигации по страницам определяется количество всех найденных строк с помощь "SQL_CALC_FOUND_ROWS"
Так вот, если количетво результатов большое запрос выполняется слишком долго.
Можно ли каким либо образом ограничить число всех результатов поиска?
Что хоть за база?
limit?
В этом параметре задается два значения:
LIMIT start,length
start - указывает, с какой позиции нужно выдавать найденные записи
length - кол-во записей
Например, нам нужно выбрать из базы данных гостевой книги записи начиная с 20 по 45 (т.е. чтоб вывести 25 записей):
$sql="select * from db_guest limit 20,25";
$result=mysql_query($sql);
Отсюда
БД MySQL.
Немного не поняли,
Вот шаблон запроса:
Суть заключается в ограниченни максимального числа ВСЕХ строк в результате поиска.
mfl, может искать строки не извлекая поля типа text, а эти поля потом считывать из базы? Похоже, что здесь строится огромадная помежуточная таблица, которая из-за факта наличия полей типа text сбрасывается полностью на диск. И только потом из неё извлекаются нужные по LIMIT данные. Отсюда и тормоза. Один большой запрос и куча маленьких могут быть намного быстрее, чем этот.
Основное время уходит именно на подсчет. т.е. даже если я вообще не извлекаю данных, время практически не меняется.
Так же это наблюдается при испольховании COUNT вместо SQL_CALC_FOUND_ROWS
А выборка нужных данных производится быстро.
Вот средние результаты:
SELECT STRAIGHT_JOIN SQL_CACHE SQL_CALC_FOUND_ROWS tabl1.id, tabl1.text, tabl2.id, tabl2.text FROM ...
время выполнения (4,7-5) сек
SELECT SQL_CACHE COUNT(id) FROM `tabl1` WHERE ...
время выполнения (~4,5) сек
SELECT STRAIGHT_JOIN SQL_CACHE tabl1.id, tabl1.text, tabl2.id, tabl2.text FROM ...
время выполнения (~0,17) сек
Данные указаны при поиске в таблице из 389508 строк
В результате поиска всего строк удовлетворяющих условию 29297
Из них выводится 25 строк
При поисковых фразах в результете которых удовлетворяет условию до 1000 строк, время выполнения до 0,2 сек, что меня вполне устраивает.
Вот я и думаю, как бы ограничить результат.