simpex
Новичок
поиск по базе статей к кешированием. оцените решение
задача
есть база mysql выполненная в виде
datatable Myisam
id(int12) | name (varchar255) | content (text)
search_log
id, keyword,time
необходимо чтобы юзеры могли делать поиск по этой базе
сейчас сделал поиск вот так
пришли параметры в скрипт keyword,
делаем select * from datatable where upper(content) like upper('% keyword %') limit 0, 100
ограничили результаты поиска 100 результатами и нормально
ВОПРОС как можно еще делать поиск чтобы не связываться с UPPER?
делаю fetch all в переменную result
после чего
создаю делаю insert в таблицу search_log кейворда
получаю id записи
пихаю переменную result в файл с id записи с временем жизни час
и перекидываю пользователя на файл просмотра резултатов поиска
viewsearch.php?sid=id записи
файл viewsearch пробует открыть файл кеша id
если все окей, тогда в зависимости от параметра
$_GET[page] по умлочанию 1
делаем
$max=count($result);
if(($_GET[page]*10+10)>$max){ $to=$max;}else{ $to=$_GET[page]*10+10;}
for ($i=$_GET[page] ; $i<$to; $i++){
выводим $result[$i]['content'];
}
вопрос
как можно еще оптимизировать такой поиск? чтобы выдержало 500 000 записей в data_table
и 50 000 обращений к ним в день
чего я забыл?
задача
есть база mysql выполненная в виде
datatable Myisam
id(int12) | name (varchar255) | content (text)
search_log
id, keyword,time
необходимо чтобы юзеры могли делать поиск по этой базе
сейчас сделал поиск вот так
пришли параметры в скрипт keyword,
делаем select * from datatable where upper(content) like upper('% keyword %') limit 0, 100
ограничили результаты поиска 100 результатами и нормально
ВОПРОС как можно еще делать поиск чтобы не связываться с UPPER?
делаю fetch all в переменную result
после чего
создаю делаю insert в таблицу search_log кейворда
получаю id записи
пихаю переменную result в файл с id записи с временем жизни час
и перекидываю пользователя на файл просмотра резултатов поиска
viewsearch.php?sid=id записи
файл viewsearch пробует открыть файл кеша id
если все окей, тогда в зависимости от параметра
$_GET[page] по умлочанию 1
делаем
$max=count($result);
if(($_GET[page]*10+10)>$max){ $to=$max;}else{ $to=$_GET[page]*10+10;}
for ($i=$_GET[page] ; $i<$to; $i++){
выводим $result[$i]['content'];
}
вопрос
как можно еще оптимизировать такой поиск? чтобы выдержало 500 000 записей в data_table
и 50 000 обращений к ним в день
чего я забыл?