8Dle
Авторизация

Оптимизация запросов в бд для мультикатегорий

Оптимизация запросов в бд для мультикатегорий

В процессе работы над одним интересным модулем заметил одну закономерность.
Когда задействую модуль, контент начинает формироваться и выводиться быстрее.
Немножко поэкспериментировал и решил поделиться этим решением с вами :)
Скорость обработки запроса увеличивается почти в 10 раз. Проверено опытным путем. Для начала покажу результаты своих замеров на 2х тестовых сайтах.
Один с 100000 записями, на локалке. И второй - 3000 записей на хостинге.
Категорий 150шт на обоих сайтах с уровнями вложенности до 3го включительно.
Прирост в 5-10 раз!

Установка
Открыть файл engine/engine.php
Найти код:
					$where_category = "category = '{$get_cats}'";
				}
			}

После него вставить:
$db->query("SELECT id FROM ".PREFIX."_post WHERE {$where_category} AND approve=1" . $where_date);
			$ids = array();
			while($r = $db->get_row()) $ids[] = $r['id'];
			if(count($ids)) $ids = implode(',',$ids);
			else $ids = 0;
			$where_category = "id IN ($ids)";

Вот и все :)

Почему стоит ставить этот хак даже не смотря на включенный кеш?
1. Кеш все же периодически чистится.
2. В DLE до 11 версии кешируются только первые 6 страниц навигации. В 11 версии уже 11 страниц. Но все равно, все остальные страницы выводятся без кеша.

UPD:
К сожалению на посещаемом сайте данный хак оказался не столь производительным. Из-за повышенной длинны запроса он стал потреблять на порядок больше оперативной памяти.

Версия DLE: любая

С уважением,
Олег Александрович a.k.a. Sander

Жмите на Кнопу ниже, или подписывайтесь!


Читайте также
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Dle это движок который изначально проектировался для создания новостных сайтов, но по мере своего развития движка значительно расширил свою функциональность и стал универсальным средством разработки и сопровождения сайтов и блогов различной направленности и тематики. По сравнению с другими бесплатными (и некоторыми платными) CMS системами движок dle обладает довольно обширными возможности.

Авторизация