Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Помогите разобраться с логом Mysql


sharman35
 Поделиться

Рекомендованные сообщения

Приветствую единомышленников по opencart!
Столкнулся с проблемой долгой загрузки магазина, неделю рыскаю по интернету в поисках хоть какой то информации об этом. Под спойлером. Помогите пожалуйста с этим разобраться!
При много благодарен!
 

133 Query SELECT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '503' AND cd.language_id = '1' AND c2s.store_id = '0' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)
133 Query SELECT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '199' AND cd.language_id = '1' AND c2s.store_id = '0' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)
133 Query SELECT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '405' AND cd.language_id = '1' AND c2s.store_id = '0' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)
133 Query SELECT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '763' AND cd.language_id = '1' AND c2s.store_id = '0' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)
133 Query SELECT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '511' AND cd.language_id = '1' AND c2s.store_id = '0' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)
133 Query SELECT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '515' AND cd.language_id = '1' AND c2s.store_id = '0' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)
133 Query SELECT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '407' AND cd.language_id = '1' AND c2s.store_id = '0' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)
133 Query SELECT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '408' AND cd.language_id = '1' AND c2s.store_id = '0' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)
133 Query SELECT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '376' AND cd.language_id = '1' AND c2s.store_id = '0' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)
133 Query SELECT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '409' AND cd.language_id = '1' AND c2s.store_id = '0' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)
133 Query SELECT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '163' AND cd.language_id = '1' AND c2s.store_id = '0' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)


 

Ссылка на комментарий
Поделиться на других сайтах


Столкнулся с проблемой долгой загрузки магазина, неделю рыскаю по интернету в поисках хоть какой то информации об этом. Под спойлером. Помогите пожалуйста с этим разобраться!

 

 

Уточните, пожалуйста, версию движка (1.5 или 2.0).

Ссылка на комментарий
Поделиться на других сайтах

зачем?

 

Проблема наверняка не только в этих запросах, так что, наверное, надо будет дать человеку дополнительную информацию по теме.

Ссылка на комментарий
Поделиться на других сайтах

Что конкретно Вы хотите услышать по этих запросах ? 

 

Для начала отключите подсчет количества категорий 

Ссылка на комментарий
Поделиться на других сайтах

Уточните, пожалуйста, версию движка (1.5 или 2.0).

ocStore © Версия 1.5.5.1.2

Чистый, без всяких сборок, натянут не стандартный шаблон.

Ссылка на комментарий
Поделиться на других сайтах


Что конкретно Вы хотите услышать по этих запросах ? 

 

Для начала отключите подсчет количества категорий 

Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться.

Ссылка на комментарий
Поделиться на других сайтах


Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться.

 

Полагаю, вам нужен код получения категорий с включенным кешированием. Вот он:

 

	public function getCategory($category_id)
	{
		$category_info = $this->cache->get((int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$category_id);
		
		if (FALSE === $category_info)
		{
			$query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "category c
			LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id)
			LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id)
			WHERE c.category_id = '" . (int)$category_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "'
			AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1'");
			
			$category_info = $query->row;
			
			$this->cache->set((int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$category_id, $category_info);
		}
		
		return $category_info;
	}
	
	
	public function getCategories($parent_id = 0)
	{
		$categories = $this->cache->get((int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$parent_id);
		
		if (FALSE === $categories)
		{
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c
			LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id)
			LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id)
			WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "'
			AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "'  AND c.status = '1'
			ORDER BY c.sort_order, LCASE(cd.name)");
			
			$categories = $query->rows;
			
			$this->cache->set((int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$parent_id, $categories);
		}
		
		return $categories;
	}

 

Внимательно только проверяйте, т.к. я скопировал его из своего проекта.

Ссылка на комментарий
Поделиться на других сайтах

Ни хрена не знаю SQL

 

Но поясните мне

 

$query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "category c
            LEFT JOIN "
. DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id)
            LEFT JOIN "
. DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id)
            WHERE c.category_id = '"
. (int)$category_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "'
            AND c2s.store_id = '"
. (int)$this->config->get('config_store_id') . "' AND c.status = '1'");

 

К учебника обращаться никого не заставляю

Ссылка на комментарий
Поделиться на других сайтах

я немного поправлю 

 

DISTINCT * 

Ссылка на комментарий
Поделиться на других сайтах

Приведите реальные данные, когда этот запрос может вернуть больше одной строки.

 

category_id - автоинкремент, уникальный (primary)

Ссылка на комментарий
Поделиться на других сайтах

не Вам, не хорошо все запросы пулять через звездочку

Ссылка на комментарий
Поделиться на других сайтах

Ну, тут как бы нужно, раграничить метод выборки, модель

 

Реально здесь нужно 3-4 поля

А где-то все..

 

И?????

Писать light метод?

 

Мы не ищем легких путей.

 

зы.. Поговорим о конструкторе запросов? :)

Ссылка на комментарий
Поделиться на других сайтах

не, конструктор запросов это тема для холивара  :-)

Ссылка на комментарий
Поделиться на других сайтах

[Query_ID] => 1

[Duration] => 0.00009550

[Query] => SELECT DISTINCT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id

[Query_ID] => 1

[Duration] => 0.00009375

[Query] => SELECT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id

Ссылка на комментарий
Поделиться на других сайтах

@druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша?

 

и вообще кешировать нужно готовое дерево в контроллере

Ссылка на комментарий
Поделиться на других сайтах

[Query_ID] => 1
  [Duration] => 0.00009550
  [Query] => SELECT DISTINCT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id

[Query_ID] => 1
   [Duration] => 0.00009375
   [Query] => SELECT * FROM oc_category c LEFT JOIN oc_category_description cd ON (c.category_id = cd.category_id) LEFT JOIN oc_category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id 

Я в курсе, что то тысячные... НО!!!

 

 

Для таких тестов используйте

 

select SQL_NO_CACHE

Ссылка на комментарий
Поделиться на других сайтах

[Query_ID] => 1
            [Duration] => 0.02308625
            [Query] => SELECT SQL_NO_CACHE * FROM

[Query_ID] => 1
            [Duration] => 0.04949400
            [Query] => SELECT SQL_NO_CACHE DISTINCT *

DISTINCT  не панацея 

Ссылка на комментарий
Поделиться на других сайтах

[Duration] => 0.02308625

[Duration] => 0.04949400

 

Но тут разница в 2!!!! раза.

в данном запросе DISTINCT - зло!

Ссылка на комментарий
Поделиться на других сайтах

getCategory

[Duration] => max 0.00043825 - min 0.00036575
[Query] => SELECT SQL_NO_CACHE DISTINCT * FROM oc_category c 

[Duration] => max 0.00040175 - min 0.00039575
[Query] => SELECT SQL_NO_CACHE * FROM oc_category c


Ссылка на комментарий
Поделиться на других сайтах

[Duration] => 0.00031925
[Query] => SELECT SQL_NO_CACHE c.category_id, c.image, c.parent_id, c.top, c.column, cd.name, cd.meta_title, cd.meta_h1, cd.meta_description, ...

сам запрос 

SELECT SQL_NO_CACHE c.category_id, c.image, c.parent_id, c.top, c.column, cd.name, cd.meta_title, cd.meta_h1, cd.meta_description, cd.meta_keyword 
									FROM " . DB_PREFIX . "category c 
										LEFT JOIN " . DB_PREFIX . "category_description cd 
											ON (c.category_id = cd.category_id) 
										LEFT JOIN " . DB_PREFIX . "category_to_store c2s 
											ON (c.category_id = c2s.category_id) 

									WHERE c.category_id = '" . (int)$category_id . "' 
										AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' 
										AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' 
										AND c.status = '1' 
									LIMIT 1

UPD а с кешом SQL так вовсе 0.00007700

Ссылка на комментарий
Поделиться на других сайтах

[Duration] => 0.02308625

[Duration] => 0.04949400

 

Но тут разница в 2!!!! раза.

в данном запросе DISTINCT - зло!

 

 

DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица.

 

Ссылка на комментарий
Поделиться на других сайтах

@druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша?

 

и вообще кешировать нужно готовое дерево в контроллере

Да чего мелочиться - давайте кешировать готовые страницы. :-)

Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили.

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.