sharman35 Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Приветствую единомышленников по 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) Надіслати Поділитися на інших сайтах More sharing options...
Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Дерево категорий формируется Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Столкнулся с проблемой долгой загрузки магазина, неделю рыскаю по интернету в поисках хоть какой то информации об этом. Под спойлером. Помогите пожалуйста с этим разобраться! Уточните, пожалуйста, версию движка (1.5 или 2.0). Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 (1.5 или 2.0).зачем? Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 зачем? Проблема наверняка не только в этих запросах, так что, наверное, надо будет дать человеку дополнительную информацию по теме. Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Что конкретно Вы хотите услышать по этих запросах ? Для начала отключите подсчет количества категорий Надіслати Поділитися на інших сайтах More sharing options... sharman35 Опубліковано: 30 листопада 2016 Автор Share Опубліковано: 30 листопада 2016 Уточните, пожалуйста, версию движка (1.5 или 2.0). ocStore © Версия 1.5.5.1.2 Чистый, без всяких сборок, натянут не стандартный шаблон. Надіслати Поділитися на інших сайтах More sharing options... sharman35 Опубліковано: 30 листопада 2016 Автор Share Опубліковано: 30 листопада 2016 Что конкретно Вы хотите услышать по этих запросах ? Для начала отключите подсчет количества категорий Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться. Полагаю, вам нужен код получения категорий с включенным кешированием. Вот он: 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; } Внимательно только проверяйте, т.к. я скопировал его из своего проекта. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ни хрена не знаю 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'"); К учебника обращаться никого не заставляю Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 я немного поправлю DISTINCT * Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Это что-то меняет? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Приведите реальные данные, когда этот запрос может вернуть больше одной строки. category_id - автоинкремент, уникальный (primary) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не Вам, не хорошо все запросы пулять через звездочку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ну, тут как бы нужно, раграничить метод выборки, модель Реально здесь нужно 3-4 поля А где-то все.. И????? Писать light метод? Мы не ищем легких путей. зы.. Поговорим о конструкторе запросов? :) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не, конструктор запросов это тема для холивара :-) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Столкнулся с проблемой долгой загрузки магазина, неделю рыскаю по интернету в поисках хоть какой то информации об этом. Под спойлером. Помогите пожалуйста с этим разобраться! Уточните, пожалуйста, версию движка (1.5 или 2.0). Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 (1.5 или 2.0).зачем? Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 зачем? Проблема наверняка не только в этих запросах, так что, наверное, надо будет дать человеку дополнительную информацию по теме. Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Что конкретно Вы хотите услышать по этих запросах ? Для начала отключите подсчет количества категорий Надіслати Поділитися на інших сайтах More sharing options... sharman35 Опубліковано: 30 листопада 2016 Автор Share Опубліковано: 30 листопада 2016 Уточните, пожалуйста, версию движка (1.5 или 2.0). ocStore © Версия 1.5.5.1.2 Чистый, без всяких сборок, натянут не стандартный шаблон. Надіслати Поділитися на інших сайтах More sharing options... sharman35 Опубліковано: 30 листопада 2016 Автор Share Опубліковано: 30 листопада 2016 Что конкретно Вы хотите услышать по этих запросах ? Для начала отключите подсчет количества категорий Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться. Полагаю, вам нужен код получения категорий с включенным кешированием. Вот он: 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; } Внимательно только проверяйте, т.к. я скопировал его из своего проекта. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ни хрена не знаю 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'"); К учебника обращаться никого не заставляю Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 я немного поправлю DISTINCT * Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Это что-то меняет? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Приведите реальные данные, когда этот запрос может вернуть больше одной строки. category_id - автоинкремент, уникальный (primary) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не Вам, не хорошо все запросы пулять через звездочку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ну, тут как бы нужно, раграничить метод выборки, модель Реально здесь нужно 3-4 поля А где-то все.. И????? Писать light метод? Мы не ищем легких путей. зы.. Поговорим о конструкторе запросов? :) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не, конструктор запросов это тема для холивара :-) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 (1.5 или 2.0).зачем? Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 зачем? Проблема наверняка не только в этих запросах, так что, наверное, надо будет дать человеку дополнительную информацию по теме. Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Что конкретно Вы хотите услышать по этих запросах ? Для начала отключите подсчет количества категорий Надіслати Поділитися на інших сайтах More sharing options... sharman35 Опубліковано: 30 листопада 2016 Автор Share Опубліковано: 30 листопада 2016 Уточните, пожалуйста, версию движка (1.5 или 2.0). ocStore © Версия 1.5.5.1.2 Чистый, без всяких сборок, натянут не стандартный шаблон. Надіслати Поділитися на інших сайтах More sharing options... sharman35 Опубліковано: 30 листопада 2016 Автор Share Опубліковано: 30 листопада 2016 Что конкретно Вы хотите услышать по этих запросах ? Для начала отключите подсчет количества категорий Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться. Полагаю, вам нужен код получения категорий с включенным кешированием. Вот он: 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; } Внимательно только проверяйте, т.к. я скопировал его из своего проекта. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ни хрена не знаю 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'"); К учебника обращаться никого не заставляю Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 я немного поправлю DISTINCT * Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Это что-то меняет? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Приведите реальные данные, когда этот запрос может вернуть больше одной строки. category_id - автоинкремент, уникальный (primary) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не Вам, не хорошо все запросы пулять через звездочку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ну, тут как бы нужно, раграничить метод выборки, модель Реально здесь нужно 3-4 поля А где-то все.. И????? Писать light метод? Мы не ищем легких путей. зы.. Поговорим о конструкторе запросов? :) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не, конструктор запросов это тема для холивара :-) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 зачем? Проблема наверняка не только в этих запросах, так что, наверное, надо будет дать человеку дополнительную информацию по теме. Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Что конкретно Вы хотите услышать по этих запросах ? Для начала отключите подсчет количества категорий Надіслати Поділитися на інших сайтах More sharing options... sharman35 Опубліковано: 30 листопада 2016 Автор Share Опубліковано: 30 листопада 2016 Уточните, пожалуйста, версию движка (1.5 или 2.0). ocStore © Версия 1.5.5.1.2 Чистый, без всяких сборок, натянут не стандартный шаблон. Надіслати Поділитися на інших сайтах More sharing options... sharman35 Опубліковано: 30 листопада 2016 Автор Share Опубліковано: 30 листопада 2016 Что конкретно Вы хотите услышать по этих запросах ? Для начала отключите подсчет количества категорий Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться. Полагаю, вам нужен код получения категорий с включенным кешированием. Вот он: 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; } Внимательно только проверяйте, т.к. я скопировал его из своего проекта. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ни хрена не знаю 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'"); К учебника обращаться никого не заставляю Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 я немного поправлю DISTINCT * Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Это что-то меняет? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Приведите реальные данные, когда этот запрос может вернуть больше одной строки. category_id - автоинкремент, уникальный (primary) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не Вам, не хорошо все запросы пулять через звездочку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ну, тут как бы нужно, раграничить метод выборки, модель Реально здесь нужно 3-4 поля А где-то все.. И????? Писать light метод? Мы не ищем легких путей. зы.. Поговорим о конструкторе запросов? :) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не, конструктор запросов это тема для холивара :-) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Что конкретно Вы хотите услышать по этих запросах ? Для начала отключите подсчет количества категорий Надіслати Поділитися на інших сайтах More sharing options... sharman35 Опубліковано: 30 листопада 2016 Автор Share Опубліковано: 30 листопада 2016 Уточните, пожалуйста, версию движка (1.5 или 2.0). ocStore © Версия 1.5.5.1.2 Чистый, без всяких сборок, натянут не стандартный шаблон. Надіслати Поділитися на інших сайтах More sharing options... sharman35 Опубліковано: 30 листопада 2016 Автор Share Опубліковано: 30 листопада 2016 Что конкретно Вы хотите услышать по этих запросах ? Для начала отключите подсчет количества категорий Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться. Полагаю, вам нужен код получения категорий с включенным кешированием. Вот он: 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; } Внимательно только проверяйте, т.к. я скопировал его из своего проекта. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ни хрена не знаю 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'"); К учебника обращаться никого не заставляю Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 я немного поправлю DISTINCT * Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Это что-то меняет? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Приведите реальные данные, когда этот запрос может вернуть больше одной строки. category_id - автоинкремент, уникальный (primary) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не Вам, не хорошо все запросы пулять через звездочку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ну, тут как бы нужно, раграничить метод выборки, модель Реально здесь нужно 3-4 поля А где-то все.. И????? Писать light метод? Мы не ищем легких путей. зы.. Поговорим о конструкторе запросов? :) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не, конструктор запросов это тема для холивара :-) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
sharman35 Опубліковано: 30 листопада 2016 Автор Share Опубліковано: 30 листопада 2016 Уточните, пожалуйста, версию движка (1.5 или 2.0). ocStore © Версия 1.5.5.1.2 Чистый, без всяких сборок, натянут не стандартный шаблон. Надіслати Поділитися на інших сайтах More sharing options...
sharman35 Опубліковано: 30 листопада 2016 Автор Share Опубліковано: 30 листопада 2016 Что конкретно Вы хотите услышать по этих запросах ? Для начала отключите подсчет количества категорий Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться. Надіслати Поділитися на інших сайтах More sharing options...
druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Артем подскажите пожалуйста как это можно сделать. Количество товара отключено, а вот с категориями не могу разобраться. Полагаю, вам нужен код получения категорий с включенным кешированием. Вот он: 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; } Внимательно только проверяйте, т.к. я скопировал его из своего проекта. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ни хрена не знаю 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'"); К учебника обращаться никого не заставляю Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 я немного поправлю DISTINCT * Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Это что-то меняет? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Приведите реальные данные, когда этот запрос может вернуть больше одной строки. category_id - автоинкремент, уникальный (primary) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не Вам, не хорошо все запросы пулять через звездочку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ну, тут как бы нужно, раграничить метод выборки, модель Реально здесь нужно 3-4 поля А где-то все.. И????? Писать light метод? Мы не ищем легких путей. зы.. Поговорим о конструкторе запросов? :) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не, конструктор запросов это тема для холивара :-) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ни хрена не знаю 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'"); К учебника обращаться никого не заставляю Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 я немного поправлю DISTINCT * Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Это что-то меняет? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Приведите реальные данные, когда этот запрос может вернуть больше одной строки. category_id - автоинкремент, уникальный (primary) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не Вам, не хорошо все запросы пулять через звездочку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ну, тут как бы нужно, раграничить метод выборки, модель Реально здесь нужно 3-4 поля А где-то все.. И????? Писать light метод? Мы не ищем легких путей. зы.. Поговорим о конструкторе запросов? :) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не, конструктор запросов это тема для холивара :-) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 я немного поправлю DISTINCT * Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Это что-то меняет? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Приведите реальные данные, когда этот запрос может вернуть больше одной строки. category_id - автоинкремент, уникальный (primary) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не Вам, не хорошо все запросы пулять через звездочку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ну, тут как бы нужно, раграничить метод выборки, модель Реально здесь нужно 3-4 поля А где-то все.. И????? Писать light метод? Мы не ищем легких путей. зы.. Поговорим о конструкторе запросов? :) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не, конструктор запросов это тема для холивара :-) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Это что-то меняет? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Приведите реальные данные, когда этот запрос может вернуть больше одной строки. category_id - автоинкремент, уникальный (primary) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не Вам, не хорошо все запросы пулять через звездочку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ну, тут как бы нужно, раграничить метод выборки, модель Реально здесь нужно 3-4 поля А где-то все.. И????? Писать light метод? Мы не ищем легких путей. зы.. Поговорим о конструкторе запросов? :) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не, конструктор запросов это тема для холивара :-) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Приведите реальные данные, когда этот запрос может вернуть больше одной строки. category_id - автоинкремент, уникальный (primary) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не Вам, не хорошо все запросы пулять через звездочку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ну, тут как бы нужно, раграничить метод выборки, модель Реально здесь нужно 3-4 поля А где-то все.. И????? Писать light метод? Мы не ищем легких путей. зы.. Поговорим о конструкторе запросов? :) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не, конструктор запросов это тема для холивара :-) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не Вам, не хорошо все запросы пулять через звездочку Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ну, тут как бы нужно, раграничить метод выборки, модель Реально здесь нужно 3-4 поля А где-то все.. И????? Писать light метод? Мы не ищем легких путей. зы.. Поговорим о конструкторе запросов? :) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не, конструктор запросов это тема для холивара :-) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 Ну, тут как бы нужно, раграничить метод выборки, модель Реально здесь нужно 3-4 поля А где-то все.. И????? Писать light метод? Мы не ищем легких путей. зы.. Поговорим о конструкторе запросов? :) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не, конструктор запросов это тема для холивара :-) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 не, конструктор запросов это тема для холивара :-) Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Otvet Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 не панацея Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
chukcha Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [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 Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Отчёты об ошибках Помогите разобраться с логом Mysql
ArtemPitov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 [Duration] => 0.02308625 [Duration] => 0.04949400 Но тут разница в 2!!!! раза. в данном запросе DISTINCT - зло! DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица. Надіслати Поділитися на інших сайтах More sharing options... druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
druzhkov Опубліковано: 30 листопада 2016 Share Опубліковано: 30 листопада 2016 @druzhkov, на хрена кешировать getCategory? чтоб засорить сотней файлов папку кеша? и вообще кешировать нужно готовое дерево в контроллере Да чего мелочиться - давайте кешировать готовые страницы. :-) Это кусок из модифицированного мной кеша, там все раскладывается по папочкам, и совершенно не напрягает. К тому же все единообразно: на входе метода модели проверили кеш, далее запросили, на выходе сохранили. Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 Вперед Сторінка 1 з 3 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts