Хак Медленные запросы в DLE
DLE хак позволяющий снизить нагрузку на MySQL, что особенно важно для сайтов расположенных на виртуальном хостинге.
Исследовав mysql.slow-queries.log автор наткнулся на очень много запросов на выборку похожих новостей. И вот какое решение предложил.
1. Делаем FULLTEXT поиск только для названия новости и краткой новости:
Выполняем запрос (не забывайте поменять префикс dle на свой, если он у вас другой):
ALTER TABLE `dle_post` DROP INDEX `short_story` ,
ADD FULLTEXT `short_story` (
`short_story` ,
`title`
)
ADD FULLTEXT `short_story` (
`short_story` ,
`title`
)
Открываем engine/modulles/show.full.php и находим:
WHERE MATCH (title, short_story, full_story, xfields)
Меняем на:
WHERE MATCH (title, short_story)
2. Подправляем, чтобы работал поиск похожих новостей в админке:
Открываем engine/ajax/find_relates.php и находим:
$db->query( "SELECT id, title, date, category, alt_name, flag, MATCH (title, short_story, full_story, xfields) AGAINST ('$title') as score FROM " . PREFIX . "_post WHERE MATCH (title, short_story, full_story, xfields) AGAINST ('$title') AND approve='1'" . $where . " ORDER BY score DESC, date DESC LIMIT 5" );
Меняем на:
$db->query( "SELECT id, title, date, category, alt_name, flag, MATCH (title, short_story) AGAINST ('$title') as score FROM " . PREFIX . "_post WHERE MATCH (title, short_story) AGAINST ('$title') AND approve='1'" . $where . " ORDER BY score DESC, date DESC LIMIT 5" );
[b]Автор:[/b] walkman7
[b]Автор:[/b] walkman7