Есть таблица DVD-дисков, в которой хранятся русское и английские названия, описание фильма (обычно список актёров) и ряд параметров типа цены, признака новинки и т.д (2253 строки общим размером 172408 кб, если верить show table status). К базе приделан скрипт на Перле, который прекрасно работает за одним исключением. Нужно было сделать поиск. Чтобы диск был выбран, каждое ключевое слово должно присутствовать либо в русском названии, либо в английском, либо в описании.
Таким образом для поиска буквы «икс» будет следующий SQL-запрос select * from dvd where (rus_name like \'%x%\' OR eng_name like \'%x%\' OR descript like \'%x%\' ) LIMIT 100 OFFSET 0.
Как видно, в любом случае скрипт выводит не более 100 совпадений. При небольшом количестве совпадений всё работает нормально. Если совпадений от 200 и выше, то скрипт напрочь зависает (страница с поиском даже не показывается, а остаётся предыдущая). Самое интересное, что если отменить открытие страницы с помощью Escape и кликнуть по какой-либо другой рабочей ссылке скрипта, скрипт всё равно в этом окне IE больше работать не будет.
Повторю, скрипт по-любому выводит не более 100 совпадений, и если их всего 150, то он нормально даёт переключаться между страницей с 100 совпадениями (OFFSET 0 в запросе) и остальными 50 (OFFSET 100).
Конечно, скрипт выводит данные о дисках в форматированном виде со всякими мелкими рисунками-заполнителями и прочем. Если сделать примитивный неформатированный вывод, то ничего не виснет. Но я не думаю, что дело в том, что какая-то запись БД конфликтует с функцией вывода, так как та же функция используется для вывода алфавитного каталога (просто меняем условие в WHERE), и там всё работает без проблем.
Подозреваю, что это описание весьма туманно для вас, но хотя бы подскажите, куда надо «копать»: какой-нибудь вариант, из-за которого могут быть эти грабли.
Если нужны дополнительные сведения, скажите – я напишу. А то с я этим уже за##ался. :insane: