0 Пользователей и 1 Гость просматривают эту тему.
  • 14 Ответов
  • 325 Просмотров
*

Wertos

  • Завсегдатай
  • 505
  • 21
И опять запрос... (~3с)
« : 27.12.2015, 20:20:39 »

Обнаружил вот такой запрос  :o

Стек вызовов
Код
JROOT/libraries/legacy/categories/categories.php:292
JROOT/libraries/legacy/categories/categories.php:184
JROOT/components/com_content/models/categories.php:147
JROOT/libraries/legacy/view/legacy.php:401
JROOT/components/com_content/views/categories/view.html.php:36
JROOT/libraries/legacy/controller/legacy.php:690
JROOT/components/com_content/controller.php:106
JROOT/libraries/legacy/controller/legacy.php:728
JROOT/components/com_content/content.php:38
JROOT/libraries/cms/component/helper.php:392
JROOT/libraries/cms/component/helper.php:372
JROOT/libraries/cms/application/site.php:192
JROOT/libraries/cms/application/site.php:231
JROOT/libraries/cms/application/cms.php:252
JROOT/index.php:46

План SQL-запросов (Explain)
Код: sql
SELECT c.id, c.asset_id, c.access, c.alias, c.checked_out, c.checked_out_time, c.created_time, c.created_user_id, c.description, c.extension, c.hits, c.language, c.level, c.lft, c.metadata, c.metadesc, c.metakey, c.modified_time, c.note, c.params, c.parent_id, c.path, c.published, c.rgt, c.title, c.modified_user_id, c.version, CASE WHEN CHAR_LENGTH(c.alias)!= 0 THEN CONCAT_WS(':', c.id, c.alias) ELSE c.id END as slug,COUNT(i.`id`) AS numitems FROM j_categories as c LEFT JOIN j_categories AS s ON (s.lft <= c.lft AND s.rgt >= c.rgt) OR (s.lft > c.lft AND s.rgt < c.rgt) LEFT JOIN (SELECT cat.id as id FROM j_categories AS cat JOIN j_categories AS parent ON cat.lft BETWEEN parent.lft AND parent.rgt WHERE parent.extension = 'com_content' AND parent.published != 1 GROUP BY cat.id) AS badcats ON badcats.id = c.id LEFT JOIN `j_content` AS i ON i.`catid` = c.id AND i.state = 1 WHERE (c.extension='com_content' OR c.extension='system') AND c.access IN (1,1,2,3,6) AND c.published = 1 AND s.id=18 AND badcats.id is null GROUP BY c.id, c.asset_id, c.access, c.alias, c.checked_out, c.checked_out_time, c.created_time, c.created_user_id, c.description, c.extension, c.hits, c.language, c.level, c.lft, c.metadata, c.metadesc, c.metakey, c.modified_time, c.note, c.params, c.parent_id, c.path, c.published, c.rgt, c.title, c.modified_user_id, c.version ORDER BY c.lft

Ссылка в меню "Список категорий", плагины отключал все, модули тоже, результат уменьшается примерно на 0.3с
Это так и должно быть ?

PS
Сервер 4ядра, 12Гб памяти, SSD 100Гб
*

voland

  • Профи
  • 9513
  • 422
  • Эта строка съедает место на вашем мониторе
Re: И опять запрос... (~3с)
« Ответ #1 : 27.12.2015, 21:03:07 »
Надо смотреть..
Сколько категорий итп, настраивать.
Можно очень ускорить
*

Wertos

  • Завсегдатай
  • 505
  • 21
Re: И опять запрос... (~3с)
« Ответ #2 : 27.12.2015, 21:29:12 »
Надо смотреть..
Сколько категорий итп, настраивать.
Можно очень ускорить

3 корневых
Новости, фото, видео.
В фото и видео примерно по 23 и 53 подкатегории, которые и выводятся по ссылке... т.е. в фото выводиться 23 и в видео 53.
Материалов примерно 30000. Но дело в том, что в фото материалов дай бог 50, а всё равно время одинаковое !
*

voland

  • Профи
  • 9513
  • 422
  • Эта строка съедает место на вашем мониторе
Re: И опять запрос... (~3с)
« Ответ #3 : 27.12.2015, 21:44:55 »
Ясно.
Могу оптимизировать, но платно.
Так не посоветовать быстро
*

Wertos

  • Завсегдатай
  • 505
  • 21
Re: И опять запрос... (~3с)
« Ответ #4 : 27.12.2015, 21:50:05 »
Ясно.
Могу оптимизировать, но платно.
Так не посоветовать быстро
загнать в кеш этот запрос я могу, мне интересно другое... Это такая "стандартная фича !J" ?
*

voland

  • Профи
  • 9513
  • 422
  • Эта строка съедает место на вашем мониторе
Re: И опять запрос... (~3с)
« Ответ #5 : 27.12.2015, 21:51:02 »
Я не про кэш, а про оптимизацию запроса.
Стандартно или нет - хз, надо смотреть.
*

voland

  • Профи
  • 9513
  • 422
  • Эта строка съедает место на вашем мониторе
Re: И опять запрос... (~3с)
« Ответ #6 : 27.12.2015, 21:51:41 »
Вчера вот ускорил меню в 800 раз, но тут другая ситуация вроде.
*

Wertos

  • Завсегдатай
  • 505
  • 21
Re: И опять запрос... (~3с)
« Ответ #7 : 27.12.2015, 21:58:19 »
Вчера вот ускорил меню в 800 раз, но тут другая ситуация вроде.

Код: php
		$cache = JFactory::getCache('categories', '');
if (!$results = $cache->get('categories_'.$id))
{
$db->setQuery($query);
$results = $db->loadObjectList('id');
 $cache->store($results, 'categories_'.$id);
}

Вот такая простая манипуляция избавляет от проблемы... Но я про "стандартную фичу !J" хотел бы услышать...
*

voland

  • Профи
  • 9513
  • 422
  • Эта строка съедает место на вашем мониторе
Re: И опять запрос... (~3с)
« Ответ #8 : 27.12.2015, 21:59:52 »
Предлагаете поднять тестовый сайт, сделать меню, 30000 материалов итп?
*

Wertos

  • Завсегдатай
  • 505
  • 21
Re: И опять запрос... (~3с)
« Ответ #9 : 27.12.2015, 22:04:55 »
Предлагаете поднять тестовый сайт, сделать меню, 30000 материалов итп?
Я ничего не предлагаю... Я предполагал что в курсе этого...

И кстати... А причём тут материалы, если это "Список всех категорий" ? Кол\во материалов у меня не подсчитываются при выводе...
*

voland

  • Профи
  • 9513
  • 422
  • Эта строка съедает место на вашем мониторе
Re: И опять запрос... (~3с)
« Ответ #10 : 27.12.2015, 22:12:55 »
Ну в запросе же LEFT JOIN j_content
*

voland

  • Профи
  • 9513
  • 422
  • Эта строка съедает место на вашем мониторе
Re: И опять запрос... (~3с)
« Ответ #11 : 27.12.2015, 22:32:55 »
Wertos, кинь в личку дамп БД, посмотрю (если там нет кучи левых расширений, изза которых не поднимется)
*

Wertos

  • Завсегдатай
  • 505
  • 21
Re: И опять запрос... (~3с)
« Ответ #12 : 27.12.2015, 22:37:12 »
Wertos, кинь в личку дамп БД, посмотрю (если там нет кучи левых расширений, изза которых не поднимется)
Весь или конкретные таблички ?
*

voland

  • Профи
  • 9513
  • 422
  • Эта строка съедает место на вашем мониторе
Re: И опять запрос... (~3с)
« Ответ #13 : 27.12.2015, 22:39:52 »
Весь или конкретные таблички ?
Мне проще весь - отдельную БД создам\удалю
*

Wertos

  • Завсегдатай
  • 505
  • 21
Re: И опять запрос... (~3с)
« Ответ #14 : 27.12.2015, 23:14:10 »
voland, а проблема вот в чём... В этой строке...

Код: php
$options['countItems'] = $params->get('show_cat_num_articles_cat', 1) || !$params->get('show_empty_categories_cat', 0);
Она всегда true !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенесено: Запрос в бд

Автор b2z

Ответов: 0
Просмотров: 79
Последний ответ 03.08.2017, 09:08:28
от b2z
Перенесено: sql запрос из материла Joomla

Автор b2z

Ответов: 0
Просмотров: 63
Последний ответ 30.06.2017, 08:52:07
от b2z
Перенесено: запрос к бд из php скрипта в Joomla

Автор b2z

Ответов: 0
Просмотров: 65
Последний ответ 28.06.2017, 09:06:29
от b2z
Перенесено: sql запрос для вывода правильной даты

Автор b2z

Ответов: 0
Просмотров: 80
Последний ответ 27.06.2017, 14:39:38
от b2z
Как сформировать limit-запрос к базе данных?

Автор Inoken

Ответов: 5
Просмотров: 119
Последний ответ 08.06.2017, 21:11:39
от dmitry_stas