Вы не зашли.
Главная » PHP » Капец нагрузка на сервер 80-100%
#1. TLENS Off (14)
Moderator
2012.07.01 14:02
И это все mysql. Вот как организовать поиск по сайту я хз.
Может просто сделать толковый ситемап скормить его гуглу и воспользоватся гугловским поиском? Как такая идея?
#2. Gemorroj Off (107)
Administrator
2012.07.01 17:05
сторонними поисковиками многое пользуются. а то, что нагрузка 80-100%, вероятно, следствие плохой архитектуры. поиск, небось, через LIKE ведется?
#3. TLENS Off (14)
Moderator
2012.07.01 20:08
Именно через него вот код запроса
Код:
lt;? $query = preg_replace('/[^a-zA-Zа-яА-ЯёЁ0-9]/u', ' ', @$_GET['query']); $like_arr = explode(' ', preg_replace('/\s+/', ' ', $query)); $like = ''; $query = ''; $true = ''; $i = 0; foreach ($like_arr as $v) { $v = trim($v); if (mb_strlen($v)>=3) { if (++$i > 10) break; $like .= " `info` LIKE ('%$v%') &&"; $query .= ', '. $v; } } $like = substr($like, 0, -3); $query = substr($query, 2); $navig = new Navig("SELECT COUNT(*) FROM `" . Config::$action . "` WHERE{$like} AND `delete` = 0", @$_GET['page'], '?query=' . urlencode($query) . '&page={page}', 10); $qin = mysql_query("SELECT * FROM `" . Config::$action . "` WHERE{$like} AND `delete` = 0 ORDER BY `rating` DESC LIMIT " . $navig->limit);
#4. TLENS Off (14)
Moderator
2012.07.01 20:08
САм знаю что ужасен но не думал что на столько
Добавлено спустя    34 секунды:
Да и вообще я в mysql не очень все ленюсь почитать про нее
#5. Gemorroj Off (107)
Administrator
2012.07.01 20:08
LIKE подобным образом на любой субд работает. Как частичное решение - убери первый процент в LIKE, чтобы начало было жестко определено. В таком случае не будет перебора, а будет использоваться индекс на `info`. Ну, и само собой, если индекса нету - поставить.
#6. tipsun Off (19)
Moderator
2012.07.01 22:10
Вроде как сфинкс система есть, вам естественно лучше знать.
#7. TLENS Off (14)
Moderator
2012.07.02 00:12
tipsun
Когда то пытался с ним подружится но потом забил. Все вроде норм было.
Добавлено спустя   1 минуту  3 секунды:
Gemorroj
Спасибо сейчас так и сделаю.
Решил переписать все и дополнение написать на си вообщем сгрузить всю базу в оперативку.
#8. TLENS Off (14)
Moderator
2012.07.02 10:10
Gemorroj написал:
LIKE подобным образом на любой субд работает. Как частичное решение - убери первый процент в LIKE, чтобы начало было жестко определено. В таком случае не будет перебора, а будет использоваться индекс на `info`. Ну, и само собой, если индекса нету - поставить.
Заменил вчера и пошел спать сегодня посмотрел оно вообще не находит если более одного слова в поиске
#9. TLENS Off (14)
Moderator
2012.07.02 10:10
TLENS написал:
Gemorroj написал:
LIKE подобным образом на любой субд работает. Как частичное решение - убери первый процент в LIKE, чтобы начало было жестко определено. В таком случае не будет перебора, а будет использоваться индекс на `info`. Ну, и само собой, если индекса нету - поставить.
Заменил вчера и пошел спать сегодня посмотрел оно вообще не находит если более одного слова в поиске. А поиск и правда заметно ускорился
#10. Gemorroj Off (107)
Administrator
2012.07.02 11:11
TLENS, ну епт..
SELECT * FROM `table` WHERE `info` LIKE "test%" OR `info` LIKE "some%";
Страниц: 1 2 3 Все
Главная
WEB
PunBB Mod v0.6.2
0.016 s