Задавайте вопросы, мы ответим
Вы не зашли.
Кто скажет, можно ли реализовать вот такое:
Есть у меня огромная таблица в которой насчитывается свыше 10 миллионом записей. Мне нужно провести полнотекстовый поиск по этой таблицы по ключевым словам. Результат соответственно может быть большим. Можно ли, к примеру сделать запрос получить ограниченое кол-во записей (к примеру 1000) и поместить этот же результат во временную таблицу с типом MEMORY чтобы тогода можно было с помощью пейджера просматривать результаты рание сделаного запроса во временной таблицы. Так будет быстрее нежели работать с большой таблицей?
Неактивен
Да, такое сделать можно — используйте LIMIT 1000. Листать по этим 1000 строкам
может быть достаточно сложно, т.к. обычно движки сайтов переиспользуют соеди-
нения хаотичным образом (и вероятность того, что «вторая» страница уйдет друго-
му пользователю равна почти единице, если пользователя более одного). Как пра-
вило, в пейджерах используют LIMIT 20,10 для того, чтобы вывести 10 записей
третьей страницы, к примеру (т.е. 20 строк пропустить, потом 10 строк вывести).
Неактивен
Тоисть поместить результат запроса у временную таблицу и в этой же таблице использовать пейджер, и вместо LIMIT 1000 использовать LIMIT 20,10? Я правильно Вас понял? Так работать будет, постраничная навигация по временной таблице?
Неактивен
Временная таблица хранится только во время жизни подключения. Если Ваш
сценарий переподключается каждый раз, то этой таблицы не будет после пере-
подключения. Если Ваш сценарий использует постоянные соединения, то эта
таблица будет, но когда прийдет другой человек за второй своей страницей —
он получит вторую Вашу, например. Или вторую страницу Васи Пупкина — как
повезет. Потому что соединение будет использовано общее.
Неактивен
С временной таблице не получется. Единственный выход из сложившейся ситуации (при выборке из большой таблицы которая насчитывает свыше 10-ки милн. строк) это создание обычной MyISAM промежуточной таблицы (к примеру из 5000 строк) в которую нужно помесить результаты отбора из большой табл. и работать с ней как с обычной табл. Проблема лишь в том как эту табл удалить когда пользователь завершил поиск и покинул ресурс. Если пользователей будет много и каждый из них будет производить поиск то таких промежуточных табл. окажется слишком много в БД, и нужно как-то реализовать механизм их удаления (создали - попользовались - удаляем). Может кто-то подскажет как это реализовать. Пока, как мне кажеться. это единственный выход для ускореной работы.
Отредактированно Van777 (05.05.2011 09:41:07)
Неактивен
Обычно каждому поиску присваивается searchid. Создавайте таблицу, содержащую seacrhid и храните, например, только последние 20 таблиц. В этих таблицах не нужно хранить все найденные записи - достаточно будет только id-ников в нужном порядке, поэтому таблицы не будут большими. Скорее всего учет поисков придется вести в отдельной таблице, в этом случае можно организовать хранение таблиц не более заданного времени (например, 2 часа).
Неактивен