<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
	<channel>
		<title>cotonti.com : Модуль pages и structure</title>
		<link>https://www.cotonti.com</link>
		<description>Last topic posts</description>
		<generator>Cotonti</generator>
		<language>en</language>
		<pubDate>Thu, 09 Apr 2026 15:20:01 -0000</pubDate>

		<item>
			<title>Macik</title>
			<description><![CDATA[<blockquote>
	<a href="https://www.cotonti.com/forums?m=posts&amp;p=37044#37044">#37044</a> <strong>esclkm: </strong><br /><p>
		Для внутренних проекторв можно сделать join</p>
</blockquote>
<p>
	Вот это конструктивно. </p>
<p>
	ладно, будет время, набью тестовыми данными сайт - потестирую…</p>
]]></description>
			<pubDate>Tue, 19 Feb 2013 20:26:07 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7339&d=0#post37055]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[<p>
	но это не корректное решение... путь категории в отличие от кода меняется чаще</p>
<p>
	like работает очень не быстро</p>
<p>
	длинна строки запроса и ее скорость не совсем симметричные понятия</p>
<p>
	делать like а потом not in - както не галлантно... и это не сократит, а наоборот увеличит расходы.</p>
<p>
	Для внутренних проекторв можно сделать join</p>
]]></description>
			<pubDate>Sun, 17 Feb 2013 09:27:14 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7339&d=0#post37044]]></link>
		</item>
		<item>
			<title>Macik</title>
			<description><![CDATA[<p>
	Да собственно, оправдываться тут нечего... Просто еще давно поднимались вопросы по поводу:</p>
<p>
	а. Скорости работы при большом количестве категорий.</p>
<p>
	б. В принципе, корретной работы движка при больших объемах данных</p>
]]></description>
			<pubDate>Sat, 16 Feb 2013 23:03:32 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7339&d=0#post37037]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[<p>
	ну это не оправдание.</p>
]]></description>
			<pubDate>Fri, 15 Feb 2013 17:30:55 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7339&d=0#post37030]]></link>
		</item>
		<item>
			<title>Macik</title>
			<description><![CDATA[<blockquote>
	<a href="https://www.cotonti.com/forums?m=posts&amp;p=37028#37028">#37028</a> <strong>esclkm: </strong><br /><p>
		еще 1 но: а кто права учитывать будет... ведь дело не в длинне строки</p>
</blockquote>
<p>
	Т.к. в запросе все равно будут дополнительные условия, никто не мешает вставить исключающее условие. В среднем исключенных разделов будет многократно меньше подключаемых.</p>
<p>
	Да и все равно еще надо делать фильтр по дате страницы, ее статусу и прочим параметрам.</p>
]]></description>
			<pubDate>Fri, 15 Feb 2013 16:44:20 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7339&d=0#post37029]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[<p>
	еще 1 но: а кто права учитывать будет... ведь дело не в длинне строки</p>
]]></description>
			<pubDate>Fri, 15 Feb 2013 15:35:04 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7339&d=0#post37028]]></link>
		</item>
		<item>
			<title>Macik</title>
			<description><![CDATA[<blockquote>
	<a href="https://www.cotonti.com/forums?m=posts&amp;p=37019#37019">#37019</a> <strong>esclkm: </strong><br />
	Like самый медленный. Я против такого.
	<p>
		<strong>Добавлено 44 секунды спустя:</strong></p>
	Да у в моих проектах дерево часто меняется:-)</blockquote>
<p>
	Да пожалуй на счет скорости соглашусь. На счет изменений дерева, так. тут нет большой разницы обновлять 1 поле или 2.</p>
<p>
	А вот, что меня смущает в текущем механизме работы с категориями, так это вся структура категорий с их свойствами грузиться массив structure, который постоянно находится в памяти. Что при значительном количестве категорий может быть проблемой.</p>
<p>
	 </p>
<p><strong>Добавлено 16 часа спустя:</strong></p><p>
	<strong>И все же… </strong></p>
<p>
	Еще помыслил на счет LIKE. Вот пример - инет-магазин количество категорий несколько сотен (700-800), достаточно разветвленное дерево и нам надо провести поиск в определенном разделе сайта включая все его подразделы (их может быть десятки, а может и сотни).</p>
<p>
	При испотзовании IN (запросы пишу упрощенно просто для понимания) :</p>
<pre class="brush:sql;">
SELECT * from cot_pages where page_cat in ('раздел1','подраздел11','подраздел12','подраздел111','подраздел112','подраздел113','подраздел121',…);</pre>
<p>
	Сталкиваемся с тем, что запрос начинает весить очень много, не говоря о том, что каждая дополнительная категория приводит к почти линейному росту времени на выполнение запроса.</p>
<p>
	У «медленного» на старте LIKE такой зависимости нет, и уже при достаточно небольшом количестве категорий для поиска, LIKE начнет обгонять указанный выше пример.</p>
<pre class="brush:sql;">
SELECT * from cot_pages where page_pathcat LIKE '1.%';</pre>
<p>
	Еще есть вариант (хотя не уверен, что он обгонит LIKE):</p>
<pre class="brush:sql;">
SELECT * from cot_pages where substr(page_pathcat,1,2) = '1.';</pre>
<p>
	 </p>
<p>
	 </p>
]]></description>
			<pubDate>Thu, 14 Feb 2013 15:07:26 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7339&d=0#post37024]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[Like самый медленный. Я против такого.<p><strong>Добавлено 44 секунды спустя:</strong></p>Да у в моих проектах дерево часто меняется:-)
]]></description>
			<pubDate>Wed, 13 Feb 2013 18:59:07 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7339&d=0#post37019]]></link>
		</item>
		<item>
			<title>Eugene</title>
			<description><![CDATA[<p>
	Хорошая мысль.</p>
<p>
	изменений тоже, видимо, не много. Это новое поле будет обновляться при всяком обновлении страницы, то есть дополнительных обработок не нужно...</p>
]]></description>
			<pubDate>Wed, 13 Feb 2013 14:43:41 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7339&d=0#post37017]]></link>
		</item>
		<item>
			<title>Macik</title>
			<description><![CDATA[<p>
	Сейчас в таблице `cot_pages` есть поле `page_cat`,  в котором хнаниться код категории, которой принадлежит страница.</p>
<p>
	Поймал себы на мысли, что часто очень не хватает поля, вкотором бы содержался не <strong>код категории</strong> и <strong>путь </strong>этой категории (который мы записываем как цифры разделенные точками). И вот почему - это был бы удобный инструмент для выборки страниц из определенных категорий ().</p>
<p>
	Очень распространенная задача выбрать все страницы из категории и ее подкатегорий. Сейчас решается вызовом `cot_structure_children` (и.т.п), и последующими запросами вида select * … where page_cat in ('1.1','1.2','1.3','1.4', …). </p>
<p>
	Кудап проще было бы просто сделать запрос "… where page_cpath LIKE '1.%'".</p>
<p>
	Опять же имяя под рукой путь категории этой страницы можно в одну строку получить путь корневой категории или путь родительской: </p>
<p>
	$root_path = array_shift( explode( '.', $page_cpath) ); <br />
	$parent_path = substr($page_cpath, 0, strrpos<b>(</b>$page_cpath, <b>'.'</b>) );</p>
<p>
	 </p>
<p>
	 </p>
<p>
	 </p>
]]></description>
			<pubDate>Wed, 13 Feb 2013 13:21:50 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7339&d=0#post37015]]></link>
		</item>
	</channel>
</rss>