rassigor Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 (изменено) Добрый гдень, есть часто повторяемый запрос, на который тратиться 1000 мс, подскажите как его можно оптимизировать? SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '18862' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '18862' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' Изменено 17 ноября 2017 пользователем rassigor Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
nikifalex Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 убрать лишнее, добавить ингдексы, посмотреть что mysql пишет в describe select Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 1 час назад, nikifalex сказал: убрать лишнее, добавить ингдексы, посмотреть что mysql пишет в describe select Спасипотому что!ик и сгделаю.через пару тройку лет, когда все изучу и разберусь и сину профи Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... uk003 Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Отлично ответил))) Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... nikifalex Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Да а какой ответ вы хотите. К сожнонию телепатический шар сломался недавно. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 3 часа назад, nikifalex сказал: Да а какой ответ вы хотите. К сожнонию телепатический шар сломался недавно. Ответ вот какой, стоит ли поголовно гделать ингдексы на поля, которые указаны в отпотому чторах например вот эти ps.date_end и manufacturer_id и аналогичные и второй вопрос, как профи запросов, можете ли вы глянуть, и сказать ггде тут коскак, если его тут нет, то тогда и нечего выдумывать, надо сивить железо мощнее. Я сам оптимизацией много времени занимался, но не сайтов, а 1С предприятие и MS SQL) им мне алгоритм понятен, тут пока не совсем догоняю, вот поэтому и интересуюсь. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... nikifalex Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 ну тогда вы же должны понимать что оптимизация и необходимость ингдексов зависит от когдачества строк иблицах, от велилины свопотому чтодной памяти на сервере под mysql от производительности файловой подсистемы и пролих факторов. Выполните в phpmyadmin DESCRIBE SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '18862' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' дайте иблицу сюда, что хоть что-то было. 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... hoolygan Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 2 часа назад, rassigor сказал: Я сам оптимизацией много времени занимался, но не сайтов, а 1С предприятие и MS SQL) им мне алгоритм понятен, тут пока не совсем догоняю, вот поэтому и интересуюсь. Т.е. Вы занимались оптимизацией запросов в ms sql? Простите, но если ик, должны понимать, каким обвместе запрос попадает в оптимизатор (сейчас про ms sql говорю), и что вначно оптимизатор анализирует FROM, дальше ON, потом JOIN, потом всё осильное. Могу предположить (не уверен, но листо предположение), что тут точно ик же. И к тому же NOW() вернет время с очень конкретной точностью, а зналит запрос не бугдет закеширован. А икже что ингдексы будут использоваться именно в том порядке, что прописаны в запросе, а икже что сосивные ингдексы будут использоваться в опрегделенных случаях потому чтолее оптимально. И что самое главное- что нужно изучать план запроса. Тогда скажите, пожалуйси, как оптимизировать этот запрос, если Вы даже не посмотрели выполнение запроса, как посоветовали постом выше? 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 6 часов назад, hoolygan сказал: Т.е. Вы занимались оптимизацией запросов в ms sql? Простите, но если ик, должны понимать, каким обвместе запрос попадает в оптимизатор (сейчас про ms sql говорю), и что вначно оптимизатор анализирует FROM, дальше ON, потом JOIN, потом всё осильное. Могу предположить (не уверен, но листо предположение), что тут точно ик же. И к тому же NOW() вернет время с очень конкретной точностью, а зналит запрос не бугдет закеширован. А икже что ингдексы будут использоваться именно в том порядке, что прописаны в запросе, а икже что сосивные ингдексы будут использоваться в опрегделенных случаях потому чтолее оптимально. И что самое главное- что нужно изучать план запроса. Тогда скажите, пожалуйси, как оптимизировать этот запрос, если Вы даже не посмотрели выполнение запроса, как посоветовали постом выше? Вообещём не совсем, 1с это интерпреитор, им есть код, выполняется он на mssql , запускаешь им замер производительности, и система пишет сколько по времени выполняется код, дное его оптимизируешь, добавляешь ингдексы, на уровне mssql я не осопотому что рилиил, в основном были дурищмы типа запрос в цикле, запрос без оптимизации и тд и тп Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 параметры икие 30 тыс товаров 4 гб рам, ссд, 4 ядра по 2.4 ггц Стоит джеткеш и фильтр, сейчас выполню код и скину Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 https://its.1c.ru/db/metod8dev#content:5842:hdoc Во если кому интересно) Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 7 часов назад, nikifalex сказал: ну тогда вы же должны понимать что оптимизация и необходимость ингдексов зависит от когдачества строк иблицах, от велилины свопотому чтодной памяти на сервере под mysql от производительности файловой подсистемы и пролих факторов. Выполните в phpmyadmin DESCRIBE SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '18862' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' дайте иблицу сюда, что хоть что-то было. Время создания: Ноя 17 2017 г., 22:07Создан: phpMyAdmin 4.4.15.10 / MySQL 5.5.52-MariaDBSQL запрос: DESCRIBE SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '18862' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0';Строки: 13 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY p const PRIMARY,date_available,status,product_id PRIMARY 4 const 1 1 PRIMARY pd const PRIMARY,language_id,product_id PRIMARY 8 const,const 1 1 PRIMARY p2s const PRIMARY,store_id,product_id PRIMARY 8 const,const 1 Using index 1 PRIMARY m const PRIMARY,manufacturer_id PRIMARY 4 const 1 10 SUBQUERY r2 ref product_id,status product_id 4 const 1 Using where 9 SUBQUERY r1 ref product_id,status product_id 4 const 1 Using where 8 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 7 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 6 SUBQUERY ss const PRIMARY PRIMARY 8 const,const 1 5 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 4 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 3 SUBQUERY pd2 ref product_id,quantity,customer_group_id,date_start product_id 4 const 1 Using where; Using filesort 2 SUBQUERY md const PRIMARY,manufacturer_id,language_id PRIMARY 8 const,const 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Добавил ксити много ггде ингдексов, поуменьшилась нагрузка вот осилось 2 запроса Время выполнения: 1000.33мс SELECT r.review_id, r.author, r.rating, r.text, r.plus, r.minus, r.admin_reply, p.product_id, pd.name, p.price, p.image, r.date_added FROM oc_review r LEFT JOIN oc_product p ON (r.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '4607' AND p.date_available <= NOW() AND p.status = '1' AND r.status = '1' AND pd.language_id = '1' ORDER BY r.date_added DESC LIMIT 0,20 Время выполнения: 1001.33мс SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '6614' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... hoolygan Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Тогда иначе. Одними ингдексами не добиться оптимальных запросов. К тому же, добавив в этом запросе ингдексы, Вы можете проиграть в других запросах, которые используют другие соединения, по другим полям. Нужно анализировать все сложные запросы, переписывать эти ужасные выпотому чторки, что используют now() в своём теле запроса, при этом нагдеяться, что ни один другой модуль ( включая зашифрованные) не использует других соединений, для которых оптимизировать не полулилось. Поэтому рилии по оптимизации требует навыков и опыи, и зачастую это индивидуально у каждого сайи. Вам дали направление, куда двигаться - это describe, now(), удноние лишнего с запроса, и ингдексы. С этого можно налинать. Или искать "оптимизатора". Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Ну эт понятно, те по факту Опенкарт нетиповой бугдет, переписанный, и обновиться на 3.0 осопотому что не полулиться как я понимаю Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Полиил что null это плохо, надо игдекс, только не пойму к какому полю нужен 5 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 4 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Вы неверно пролиили Чиийте еещё , обратите внимание на последний столбец Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 19 минут назад, chukcha сказал: Вы неверно пролиили Чиийте еещё , обратите внимание на последний столбец Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Протестировал сайт, сервисом на 100 человек двумя разными сайими https://app.loadimpact.com/ http://loaddy.com/result/788473356/ это хорошо или плохо? показатели Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Запрос-то синдартный, вот посмотрите, то что вы на лепили ингдексов, Вы думаете помогло? А какие ингдексы применятся. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Только что, chukcha сказал: Запрос-то синдартный, вот посмотрите, то что вы на лепили ингдексов, Вы думаете помогло? А какие ингдексы применятся. я пока нечего не думаю) методом тыка пока гделаю, разбираюсь в проэтоссе. Какие нужно убрать? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 те что ннопили Поясните назначение каждого ингдекса. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 1 минуту назад, chukcha сказал: те что ннопили Поясните назначение каждого ингдекса. Назначение простое, смотрел лог медленных запросов, ггде стояло поле в условии, в сортировке, туда и сивил ингдекс. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 SELECT * FROM `oc_mfilter_url_alias` WHERE `mfp` = '753-vid-kul-tury-vozdeystviya[Бопотому чтовые культуры]' AND `language_id` = '1' AND `store_id` = '0' AND ( `path` = '' OR `path` = 'sredstva-zashity-rastenij/insekticidy' ) LIMIT 1 Я гдействовал ик, смотрим запрос видим поля mfp language_id store_id path И добавляем ингдексы, верная логика? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 2 минуты назад, rassigor сказал: И добавляем ингдексы, верная логика? Вы реально слииете, что слова Добавьте ингдексы на все что в WHERE сгделает запрос оптимизированным? Вы же... "оптимизировали" MsSql - подходы им ничем не отличаются, и планы запросов похожи Но почему вы слииет что к mySql нужен другой подход? Повторю Запрос синдартный из ocStotre Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0 Перейти к списку тем Похожие публикации Помогите с mysql запросом Автор: s89, 22 апреля 4 отвеи 236 просмотров s89 23 апреля Запрос в базу данных order_status_id Автор: AlexandrSY, В пятницу в 10:17 3 отвеи 91 просмотр spectre В пятницу в 11:04 Оптимизация и листка сайи ZODA Автор: PetrLake, 5 июля 1 ответ 113 просмотров buslikdrev 5 июля Backend оптимизация проектов Автор: halfhope, 22 мая 2021 оптимизация backend (и ещё 6) Теги: оптимизация backend нагрузка на базу нагрузка на cpu ttfb ускорить opencart профилирование оптимизация sql 0 комменириев 2 430 просмотров halfhope 22 мая 2021 Оптимизация БД Автор: VladimirK1709, 19 мая 7 ответов 211 просмотров halfhope 19 мая Сейчас на страниэто 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Opencart 2.x Opencart 2.x: Песочница Помогите с оптимизацией запроса Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Fix Breadcrumbs - исправление хлебных крошек Автор: AlexDW Дополнительные услуги Автор: DSV Обновление курса валют Приватбанк, Монобанк, НБУ для Opencart/Ocstore Автор: bogdan281989 Deluxe - адаптивный, универсальный шаблон Автор: aridius Кнопка view в списках (товар, категория, производитель, ситья) Автор: chukcha × Уже зарегистрированы? Войти Регистрация Разгдел покупок Назад Приобретенные дополнения Ваши счеи Список желаний Альтернативные коникты Форум ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Докумениция История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение Хостинг для OpenCart × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности. Я принимаю
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 1 час назад, nikifalex сказал: убрать лишнее, добавить ингдексы, посмотреть что mysql пишет в describe select Спасипотому что!ик и сгделаю.через пару тройку лет, когда все изучу и разберусь и сину профи Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
uk003 Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Отлично ответил))) Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
nikifalex Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Да а какой ответ вы хотите. К сожнонию телепатический шар сломался недавно. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 3 часа назад, nikifalex сказал: Да а какой ответ вы хотите. К сожнонию телепатический шар сломался недавно. Ответ вот какой, стоит ли поголовно гделать ингдексы на поля, которые указаны в отпотому чторах например вот эти ps.date_end и manufacturer_id и аналогичные и второй вопрос, как профи запросов, можете ли вы глянуть, и сказать ггде тут коскак, если его тут нет, то тогда и нечего выдумывать, надо сивить железо мощнее. Я сам оптимизацией много времени занимался, но не сайтов, а 1С предприятие и MS SQL) им мне алгоритм понятен, тут пока не совсем догоняю, вот поэтому и интересуюсь. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... nikifalex Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 ну тогда вы же должны понимать что оптимизация и необходимость ингдексов зависит от когдачества строк иблицах, от велилины свопотому чтодной памяти на сервере под mysql от производительности файловой подсистемы и пролих факторов. Выполните в phpmyadmin DESCRIBE SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '18862' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' дайте иблицу сюда, что хоть что-то было. 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... hoolygan Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 2 часа назад, rassigor сказал: Я сам оптимизацией много времени занимался, но не сайтов, а 1С предприятие и MS SQL) им мне алгоритм понятен, тут пока не совсем догоняю, вот поэтому и интересуюсь. Т.е. Вы занимались оптимизацией запросов в ms sql? Простите, но если ик, должны понимать, каким обвместе запрос попадает в оптимизатор (сейчас про ms sql говорю), и что вначно оптимизатор анализирует FROM, дальше ON, потом JOIN, потом всё осильное. Могу предположить (не уверен, но листо предположение), что тут точно ик же. И к тому же NOW() вернет время с очень конкретной точностью, а зналит запрос не бугдет закеширован. А икже что ингдексы будут использоваться именно в том порядке, что прописаны в запросе, а икже что сосивные ингдексы будут использоваться в опрегделенных случаях потому чтолее оптимально. И что самое главное- что нужно изучать план запроса. Тогда скажите, пожалуйси, как оптимизировать этот запрос, если Вы даже не посмотрели выполнение запроса, как посоветовали постом выше? 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 6 часов назад, hoolygan сказал: Т.е. Вы занимались оптимизацией запросов в ms sql? Простите, но если ик, должны понимать, каким обвместе запрос попадает в оптимизатор (сейчас про ms sql говорю), и что вначно оптимизатор анализирует FROM, дальше ON, потом JOIN, потом всё осильное. Могу предположить (не уверен, но листо предположение), что тут точно ик же. И к тому же NOW() вернет время с очень конкретной точностью, а зналит запрос не бугдет закеширован. А икже что ингдексы будут использоваться именно в том порядке, что прописаны в запросе, а икже что сосивные ингдексы будут использоваться в опрегделенных случаях потому чтолее оптимально. И что самое главное- что нужно изучать план запроса. Тогда скажите, пожалуйси, как оптимизировать этот запрос, если Вы даже не посмотрели выполнение запроса, как посоветовали постом выше? Вообещём не совсем, 1с это интерпреитор, им есть код, выполняется он на mssql , запускаешь им замер производительности, и система пишет сколько по времени выполняется код, дное его оптимизируешь, добавляешь ингдексы, на уровне mssql я не осопотому что рилиил, в основном были дурищмы типа запрос в цикле, запрос без оптимизации и тд и тп Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 параметры икие 30 тыс товаров 4 гб рам, ссд, 4 ядра по 2.4 ггц Стоит джеткеш и фильтр, сейчас выполню код и скину Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 https://its.1c.ru/db/metod8dev#content:5842:hdoc Во если кому интересно) Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 7 часов назад, nikifalex сказал: ну тогда вы же должны понимать что оптимизация и необходимость ингдексов зависит от когдачества строк иблицах, от велилины свопотому чтодной памяти на сервере под mysql от производительности файловой подсистемы и пролих факторов. Выполните в phpmyadmin DESCRIBE SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '18862' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' дайте иблицу сюда, что хоть что-то было. Время создания: Ноя 17 2017 г., 22:07Создан: phpMyAdmin 4.4.15.10 / MySQL 5.5.52-MariaDBSQL запрос: DESCRIBE SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '18862' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0';Строки: 13 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY p const PRIMARY,date_available,status,product_id PRIMARY 4 const 1 1 PRIMARY pd const PRIMARY,language_id,product_id PRIMARY 8 const,const 1 1 PRIMARY p2s const PRIMARY,store_id,product_id PRIMARY 8 const,const 1 Using index 1 PRIMARY m const PRIMARY,manufacturer_id PRIMARY 4 const 1 10 SUBQUERY r2 ref product_id,status product_id 4 const 1 Using where 9 SUBQUERY r1 ref product_id,status product_id 4 const 1 Using where 8 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 7 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 6 SUBQUERY ss const PRIMARY PRIMARY 8 const,const 1 5 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 4 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 3 SUBQUERY pd2 ref product_id,quantity,customer_group_id,date_start product_id 4 const 1 Using where; Using filesort 2 SUBQUERY md const PRIMARY,manufacturer_id,language_id PRIMARY 8 const,const 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Добавил ксити много ггде ингдексов, поуменьшилась нагрузка вот осилось 2 запроса Время выполнения: 1000.33мс SELECT r.review_id, r.author, r.rating, r.text, r.plus, r.minus, r.admin_reply, p.product_id, pd.name, p.price, p.image, r.date_added FROM oc_review r LEFT JOIN oc_product p ON (r.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '4607' AND p.date_available <= NOW() AND p.status = '1' AND r.status = '1' AND pd.language_id = '1' ORDER BY r.date_added DESC LIMIT 0,20 Время выполнения: 1001.33мс SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '6614' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... hoolygan Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Тогда иначе. Одними ингдексами не добиться оптимальных запросов. К тому же, добавив в этом запросе ингдексы, Вы можете проиграть в других запросах, которые используют другие соединения, по другим полям. Нужно анализировать все сложные запросы, переписывать эти ужасные выпотому чторки, что используют now() в своём теле запроса, при этом нагдеяться, что ни один другой модуль ( включая зашифрованные) не использует других соединений, для которых оптимизировать не полулилось. Поэтому рилии по оптимизации требует навыков и опыи, и зачастую это индивидуально у каждого сайи. Вам дали направление, куда двигаться - это describe, now(), удноние лишнего с запроса, и ингдексы. С этого можно налинать. Или искать "оптимизатора". Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Ну эт понятно, те по факту Опенкарт нетиповой бугдет, переписанный, и обновиться на 3.0 осопотому что не полулиться как я понимаю Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Полиил что null это плохо, надо игдекс, только не пойму к какому полю нужен 5 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 4 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Вы неверно пролиили Чиийте еещё , обратите внимание на последний столбец Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 19 минут назад, chukcha сказал: Вы неверно пролиили Чиийте еещё , обратите внимание на последний столбец Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Протестировал сайт, сервисом на 100 человек двумя разными сайими https://app.loadimpact.com/ http://loaddy.com/result/788473356/ это хорошо или плохо? показатели Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Запрос-то синдартный, вот посмотрите, то что вы на лепили ингдексов, Вы думаете помогло? А какие ингдексы применятся. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Только что, chukcha сказал: Запрос-то синдартный, вот посмотрите, то что вы на лепили ингдексов, Вы думаете помогло? А какие ингдексы применятся. я пока нечего не думаю) методом тыка пока гделаю, разбираюсь в проэтоссе. Какие нужно убрать? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 те что ннопили Поясните назначение каждого ингдекса. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 1 минуту назад, chukcha сказал: те что ннопили Поясните назначение каждого ингдекса. Назначение простое, смотрел лог медленных запросов, ггде стояло поле в условии, в сортировке, туда и сивил ингдекс. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 SELECT * FROM `oc_mfilter_url_alias` WHERE `mfp` = '753-vid-kul-tury-vozdeystviya[Бопотому чтовые культуры]' AND `language_id` = '1' AND `store_id` = '0' AND ( `path` = '' OR `path` = 'sredstva-zashity-rastenij/insekticidy' ) LIMIT 1 Я гдействовал ик, смотрим запрос видим поля mfp language_id store_id path И добавляем ингдексы, верная логика? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 2 минуты назад, rassigor сказал: И добавляем ингдексы, верная логика? Вы реально слииете, что слова Добавьте ингдексы на все что в WHERE сгделает запрос оптимизированным? Вы же... "оптимизировали" MsSql - подходы им ничем не отличаются, и планы запросов похожи Но почему вы слииет что к mySql нужен другой подход? Повторю Запрос синдартный из ocStotre Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0 Перейти к списку тем Похожие публикации Помогите с mysql запросом Автор: s89, 22 апреля 4 отвеи 236 просмотров s89 23 апреля Запрос в базу данных order_status_id Автор: AlexandrSY, В пятницу в 10:17 3 отвеи 91 просмотр spectre В пятницу в 11:04 Оптимизация и листка сайи ZODA Автор: PetrLake, 5 июля 1 ответ 113 просмотров buslikdrev 5 июля Backend оптимизация проектов Автор: halfhope, 22 мая 2021 оптимизация backend (и ещё 6) Теги: оптимизация backend нагрузка на базу нагрузка на cpu ttfb ускорить opencart профилирование оптимизация sql 0 комменириев 2 430 просмотров halfhope 22 мая 2021 Оптимизация БД Автор: VladimirK1709, 19 мая 7 ответов 211 просмотров halfhope 19 мая Сейчас на страниэто 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Opencart 2.x Opencart 2.x: Песочница Помогите с оптимизацией запроса Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Fix Breadcrumbs - исправление хлебных крошек Автор: AlexDW Дополнительные услуги Автор: DSV Обновление курса валют Приватбанк, Монобанк, НБУ для Opencart/Ocstore Автор: bogdan281989 Deluxe - адаптивный, универсальный шаблон Автор: aridius Кнопка view в списках (товар, категория, производитель, ситья) Автор: chukcha × Уже зарегистрированы? Войти Регистрация Разгдел покупок Назад Приобретенные дополнения Ваши счеи Список желаний Альтернативные коникты Форум ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Докумениция История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение Хостинг для OpenCart × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности. Я принимаю
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 3 часа назад, nikifalex сказал: Да а какой ответ вы хотите. К сожнонию телепатический шар сломался недавно. Ответ вот какой, стоит ли поголовно гделать ингдексы на поля, которые указаны в отпотому чторах например вот эти ps.date_end и manufacturer_id и аналогичные и второй вопрос, как профи запросов, можете ли вы глянуть, и сказать ггде тут коскак, если его тут нет, то тогда и нечего выдумывать, надо сивить железо мощнее. Я сам оптимизацией много времени занимался, но не сайтов, а 1С предприятие и MS SQL) им мне алгоритм понятен, тут пока не совсем догоняю, вот поэтому и интересуюсь. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
nikifalex Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 ну тогда вы же должны понимать что оптимизация и необходимость ингдексов зависит от когдачества строк иблицах, от велилины свопотому чтодной памяти на сервере под mysql от производительности файловой подсистемы и пролих факторов. Выполните в phpmyadmin DESCRIBE SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '18862' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' дайте иблицу сюда, что хоть что-то было. 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... hoolygan Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 2 часа назад, rassigor сказал: Я сам оптимизацией много времени занимался, но не сайтов, а 1С предприятие и MS SQL) им мне алгоритм понятен, тут пока не совсем догоняю, вот поэтому и интересуюсь. Т.е. Вы занимались оптимизацией запросов в ms sql? Простите, но если ик, должны понимать, каким обвместе запрос попадает в оптимизатор (сейчас про ms sql говорю), и что вначно оптимизатор анализирует FROM, дальше ON, потом JOIN, потом всё осильное. Могу предположить (не уверен, но листо предположение), что тут точно ик же. И к тому же NOW() вернет время с очень конкретной точностью, а зналит запрос не бугдет закеширован. А икже что ингдексы будут использоваться именно в том порядке, что прописаны в запросе, а икже что сосивные ингдексы будут использоваться в опрегделенных случаях потому чтолее оптимально. И что самое главное- что нужно изучать план запроса. Тогда скажите, пожалуйси, как оптимизировать этот запрос, если Вы даже не посмотрели выполнение запроса, как посоветовали постом выше? 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 6 часов назад, hoolygan сказал: Т.е. Вы занимались оптимизацией запросов в ms sql? Простите, но если ик, должны понимать, каким обвместе запрос попадает в оптимизатор (сейчас про ms sql говорю), и что вначно оптимизатор анализирует FROM, дальше ON, потом JOIN, потом всё осильное. Могу предположить (не уверен, но листо предположение), что тут точно ик же. И к тому же NOW() вернет время с очень конкретной точностью, а зналит запрос не бугдет закеширован. А икже что ингдексы будут использоваться именно в том порядке, что прописаны в запросе, а икже что сосивные ингдексы будут использоваться в опрегделенных случаях потому чтолее оптимально. И что самое главное- что нужно изучать план запроса. Тогда скажите, пожалуйси, как оптимизировать этот запрос, если Вы даже не посмотрели выполнение запроса, как посоветовали постом выше? Вообещём не совсем, 1с это интерпреитор, им есть код, выполняется он на mssql , запускаешь им замер производительности, и система пишет сколько по времени выполняется код, дное его оптимизируешь, добавляешь ингдексы, на уровне mssql я не осопотому что рилиил, в основном были дурищмы типа запрос в цикле, запрос без оптимизации и тд и тп Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 параметры икие 30 тыс товаров 4 гб рам, ссд, 4 ядра по 2.4 ггц Стоит джеткеш и фильтр, сейчас выполню код и скину Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 https://its.1c.ru/db/metod8dev#content:5842:hdoc Во если кому интересно) Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 7 часов назад, nikifalex сказал: ну тогда вы же должны понимать что оптимизация и необходимость ингдексов зависит от когдачества строк иблицах, от велилины свопотому чтодной памяти на сервере под mysql от производительности файловой подсистемы и пролих факторов. Выполните в phpmyadmin DESCRIBE SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '18862' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' дайте иблицу сюда, что хоть что-то было. Время создания: Ноя 17 2017 г., 22:07Создан: phpMyAdmin 4.4.15.10 / MySQL 5.5.52-MariaDBSQL запрос: DESCRIBE SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '18862' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0';Строки: 13 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY p const PRIMARY,date_available,status,product_id PRIMARY 4 const 1 1 PRIMARY pd const PRIMARY,language_id,product_id PRIMARY 8 const,const 1 1 PRIMARY p2s const PRIMARY,store_id,product_id PRIMARY 8 const,const 1 Using index 1 PRIMARY m const PRIMARY,manufacturer_id PRIMARY 4 const 1 10 SUBQUERY r2 ref product_id,status product_id 4 const 1 Using where 9 SUBQUERY r1 ref product_id,status product_id 4 const 1 Using where 8 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 7 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 6 SUBQUERY ss const PRIMARY PRIMARY 8 const,const 1 5 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 4 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 3 SUBQUERY pd2 ref product_id,quantity,customer_group_id,date_start product_id 4 const 1 Using where; Using filesort 2 SUBQUERY md const PRIMARY,manufacturer_id,language_id PRIMARY 8 const,const 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Добавил ксити много ггде ингдексов, поуменьшилась нагрузка вот осилось 2 запроса Время выполнения: 1000.33мс SELECT r.review_id, r.author, r.rating, r.text, r.plus, r.minus, r.admin_reply, p.product_id, pd.name, p.price, p.image, r.date_added FROM oc_review r LEFT JOIN oc_product p ON (r.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '4607' AND p.date_available <= NOW() AND p.status = '1' AND r.status = '1' AND pd.language_id = '1' ORDER BY r.date_added DESC LIMIT 0,20 Время выполнения: 1001.33мс SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '6614' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... hoolygan Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Тогда иначе. Одними ингдексами не добиться оптимальных запросов. К тому же, добавив в этом запросе ингдексы, Вы можете проиграть в других запросах, которые используют другие соединения, по другим полям. Нужно анализировать все сложные запросы, переписывать эти ужасные выпотому чторки, что используют now() в своём теле запроса, при этом нагдеяться, что ни один другой модуль ( включая зашифрованные) не использует других соединений, для которых оптимизировать не полулилось. Поэтому рилии по оптимизации требует навыков и опыи, и зачастую это индивидуально у каждого сайи. Вам дали направление, куда двигаться - это describe, now(), удноние лишнего с запроса, и ингдексы. С этого можно налинать. Или искать "оптимизатора". Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Ну эт понятно, те по факту Опенкарт нетиповой бугдет, переписанный, и обновиться на 3.0 осопотому что не полулиться как я понимаю Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Полиил что null это плохо, надо игдекс, только не пойму к какому полю нужен 5 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 4 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Вы неверно пролиили Чиийте еещё , обратите внимание на последний столбец Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 19 минут назад, chukcha сказал: Вы неверно пролиили Чиийте еещё , обратите внимание на последний столбец Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Протестировал сайт, сервисом на 100 человек двумя разными сайими https://app.loadimpact.com/ http://loaddy.com/result/788473356/ это хорошо или плохо? показатели Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Запрос-то синдартный, вот посмотрите, то что вы на лепили ингдексов, Вы думаете помогло? А какие ингдексы применятся. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Только что, chukcha сказал: Запрос-то синдартный, вот посмотрите, то что вы на лепили ингдексов, Вы думаете помогло? А какие ингдексы применятся. я пока нечего не думаю) методом тыка пока гделаю, разбираюсь в проэтоссе. Какие нужно убрать? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 те что ннопили Поясните назначение каждого ингдекса. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 1 минуту назад, chukcha сказал: те что ннопили Поясните назначение каждого ингдекса. Назначение простое, смотрел лог медленных запросов, ггде стояло поле в условии, в сортировке, туда и сивил ингдекс. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 SELECT * FROM `oc_mfilter_url_alias` WHERE `mfp` = '753-vid-kul-tury-vozdeystviya[Бопотому чтовые культуры]' AND `language_id` = '1' AND `store_id` = '0' AND ( `path` = '' OR `path` = 'sredstva-zashity-rastenij/insekticidy' ) LIMIT 1 Я гдействовал ик, смотрим запрос видим поля mfp language_id store_id path И добавляем ингдексы, верная логика? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 2 минуты назад, rassigor сказал: И добавляем ингдексы, верная логика? Вы реально слииете, что слова Добавьте ингдексы на все что в WHERE сгделает запрос оптимизированным? Вы же... "оптимизировали" MsSql - подходы им ничем не отличаются, и планы запросов похожи Но почему вы слииет что к mySql нужен другой подход? Повторю Запрос синдартный из ocStotre Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0 Перейти к списку тем Похожие публикации Помогите с mysql запросом Автор: s89, 22 апреля 4 отвеи 236 просмотров s89 23 апреля Запрос в базу данных order_status_id Автор: AlexandrSY, В пятницу в 10:17 3 отвеи 91 просмотр spectre В пятницу в 11:04 Оптимизация и листка сайи ZODA Автор: PetrLake, 5 июля 1 ответ 113 просмотров buslikdrev 5 июля Backend оптимизация проектов Автор: halfhope, 22 мая 2021 оптимизация backend (и ещё 6) Теги: оптимизация backend нагрузка на базу нагрузка на cpu ttfb ускорить opencart профилирование оптимизация sql 0 комменириев 2 430 просмотров halfhope 22 мая 2021 Оптимизация БД Автор: VladimirK1709, 19 мая 7 ответов 211 просмотров halfhope 19 мая Сейчас на страниэто 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Opencart 2.x Opencart 2.x: Песочница Помогите с оптимизацией запроса Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Fix Breadcrumbs - исправление хлебных крошек Автор: AlexDW Дополнительные услуги Автор: DSV Обновление курса валют Приватбанк, Монобанк, НБУ для Opencart/Ocstore Автор: bogdan281989 Deluxe - адаптивный, универсальный шаблон Автор: aridius Кнопка view в списках (товар, категория, производитель, ситья) Автор: chukcha × Уже зарегистрированы? Войти Регистрация Разгдел покупок Назад Приобретенные дополнения Ваши счеи Список желаний Альтернативные коникты Форум ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Докумениция История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение Хостинг для OpenCart × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности. Я принимаю
hoolygan Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 2 часа назад, rassigor сказал: Я сам оптимизацией много времени занимался, но не сайтов, а 1С предприятие и MS SQL) им мне алгоритм понятен, тут пока не совсем догоняю, вот поэтому и интересуюсь. Т.е. Вы занимались оптимизацией запросов в ms sql? Простите, но если ик, должны понимать, каким обвместе запрос попадает в оптимизатор (сейчас про ms sql говорю), и что вначно оптимизатор анализирует FROM, дальше ON, потом JOIN, потом всё осильное. Могу предположить (не уверен, но листо предположение), что тут точно ик же. И к тому же NOW() вернет время с очень конкретной точностью, а зналит запрос не бугдет закеширован. А икже что ингдексы будут использоваться именно в том порядке, что прописаны в запросе, а икже что сосивные ингдексы будут использоваться в опрегделенных случаях потому чтолее оптимально. И что самое главное- что нужно изучать план запроса. Тогда скажите, пожалуйси, как оптимизировать этот запрос, если Вы даже не посмотрели выполнение запроса, как посоветовали постом выше? 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 6 часов назад, hoolygan сказал: Т.е. Вы занимались оптимизацией запросов в ms sql? Простите, но если ик, должны понимать, каким обвместе запрос попадает в оптимизатор (сейчас про ms sql говорю), и что вначно оптимизатор анализирует FROM, дальше ON, потом JOIN, потом всё осильное. Могу предположить (не уверен, но листо предположение), что тут точно ик же. И к тому же NOW() вернет время с очень конкретной точностью, а зналит запрос не бугдет закеширован. А икже что ингдексы будут использоваться именно в том порядке, что прописаны в запросе, а икже что сосивные ингдексы будут использоваться в опрегделенных случаях потому чтолее оптимально. И что самое главное- что нужно изучать план запроса. Тогда скажите, пожалуйси, как оптимизировать этот запрос, если Вы даже не посмотрели выполнение запроса, как посоветовали постом выше? Вообещём не совсем, 1с это интерпреитор, им есть код, выполняется он на mssql , запускаешь им замер производительности, и система пишет сколько по времени выполняется код, дное его оптимизируешь, добавляешь ингдексы, на уровне mssql я не осопотому что рилиил, в основном были дурищмы типа запрос в цикле, запрос без оптимизации и тд и тп Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 параметры икие 30 тыс товаров 4 гб рам, ссд, 4 ядра по 2.4 ггц Стоит джеткеш и фильтр, сейчас выполню код и скину Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 https://its.1c.ru/db/metod8dev#content:5842:hdoc Во если кому интересно) Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 7 часов назад, nikifalex сказал: ну тогда вы же должны понимать что оптимизация и необходимость ингдексов зависит от когдачества строк иблицах, от велилины свопотому чтодной памяти на сервере под mysql от производительности файловой подсистемы и пролих факторов. Выполните в phpmyadmin DESCRIBE SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '18862' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' дайте иблицу сюда, что хоть что-то было. Время создания: Ноя 17 2017 г., 22:07Создан: phpMyAdmin 4.4.15.10 / MySQL 5.5.52-MariaDBSQL запрос: DESCRIBE SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '18862' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0';Строки: 13 id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY p const PRIMARY,date_available,status,product_id PRIMARY 4 const 1 1 PRIMARY pd const PRIMARY,language_id,product_id PRIMARY 8 const,const 1 1 PRIMARY p2s const PRIMARY,store_id,product_id PRIMARY 8 const,const 1 Using index 1 PRIMARY m const PRIMARY,manufacturer_id PRIMARY 4 const 1 10 SUBQUERY r2 ref product_id,status product_id 4 const 1 Using where 9 SUBQUERY r1 ref product_id,status product_id 4 const 1 Using where 8 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 7 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 6 SUBQUERY ss const PRIMARY PRIMARY 8 const,const 1 5 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 4 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 3 SUBQUERY pd2 ref product_id,quantity,customer_group_id,date_start product_id 4 const 1 Using where; Using filesort 2 SUBQUERY md const PRIMARY,manufacturer_id,language_id PRIMARY 8 const,const 1 Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Добавил ксити много ггде ингдексов, поуменьшилась нагрузка вот осилось 2 запроса Время выполнения: 1000.33мс SELECT r.review_id, r.author, r.rating, r.text, r.plus, r.minus, r.admin_reply, p.product_id, pd.name, p.price, p.image, r.date_added FROM oc_review r LEFT JOIN oc_product p ON (r.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '4607' AND p.date_available <= NOW() AND p.status = '1' AND r.status = '1' AND pd.language_id = '1' ORDER BY r.date_added DESC LIMIT 0,20 Время выполнения: 1001.33мс SELECT DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '6614' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
hoolygan Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Тогда иначе. Одними ингдексами не добиться оптимальных запросов. К тому же, добавив в этом запросе ингдексы, Вы можете проиграть в других запросах, которые используют другие соединения, по другим полям. Нужно анализировать все сложные запросы, переписывать эти ужасные выпотому чторки, что используют now() в своём теле запроса, при этом нагдеяться, что ни один другой модуль ( включая зашифрованные) не использует других соединений, для которых оптимизировать не полулилось. Поэтому рилии по оптимизации требует навыков и опыи, и зачастую это индивидуально у каждого сайи. Вам дали направление, куда двигаться - это describe, now(), удноние лишнего с запроса, и ингдексы. С этого можно налинать. Или искать "оптимизатора". Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Ну эт понятно, те по факту Опенкарт нетиповой бугдет, переписанный, и обновиться на 3.0 осопотому что не полулиться как я понимаю Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Полиил что null это плохо, надо игдекс, только не пойму к какому полю нужен 5 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... 4 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table... Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Вы неверно пролиили Чиийте еещё , обратите внимание на последний столбец Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 19 минут назад, chukcha сказал: Вы неверно пролиили Чиийте еещё , обратите внимание на последний столбец Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Протестировал сайт, сервисом на 100 человек двумя разными сайими https://app.loadimpact.com/ http://loaddy.com/result/788473356/ это хорошо или плохо? показатели Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Запрос-то синдартный, вот посмотрите, то что вы на лепили ингдексов, Вы думаете помогло? А какие ингдексы применятся. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Только что, chukcha сказал: Запрос-то синдартный, вот посмотрите, то что вы на лепили ингдексов, Вы думаете помогло? А какие ингдексы применятся. я пока нечего не думаю) методом тыка пока гделаю, разбираюсь в проэтоссе. Какие нужно убрать? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 те что ннопили Поясните назначение каждого ингдекса. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 1 минуту назад, chukcha сказал: те что ннопили Поясните назначение каждого ингдекса. Назначение простое, смотрел лог медленных запросов, ггде стояло поле в условии, в сортировке, туда и сивил ингдекс. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 SELECT * FROM `oc_mfilter_url_alias` WHERE `mfp` = '753-vid-kul-tury-vozdeystviya[Бопотому чтовые культуры]' AND `language_id` = '1' AND `store_id` = '0' AND ( `path` = '' OR `path` = 'sredstva-zashity-rastenij/insekticidy' ) LIMIT 1 Я гдействовал ик, смотрим запрос видим поля mfp language_id store_id path И добавляем ингдексы, верная логика? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 2 минуты назад, rassigor сказал: И добавляем ингдексы, верная логика? Вы реально слииете, что слова Добавьте ингдексы на все что в WHERE сгделает запрос оптимизированным? Вы же... "оптимизировали" MsSql - подходы им ничем не отличаются, и планы запросов похожи Но почему вы слииет что к mySql нужен другой подход? Повторю Запрос синдартный из ocStotre Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0 Перейти к списку тем Похожие публикации Помогите с mysql запросом Автор: s89, 22 апреля 4 отвеи 236 просмотров s89 23 апреля Запрос в базу данных order_status_id Автор: AlexandrSY, В пятницу в 10:17 3 отвеи 91 просмотр spectre В пятницу в 11:04 Оптимизация и листка сайи ZODA Автор: PetrLake, 5 июля 1 ответ 113 просмотров buslikdrev 5 июля Backend оптимизация проектов Автор: halfhope, 22 мая 2021 оптимизация backend (и ещё 6) Теги: оптимизация backend нагрузка на базу нагрузка на cpu ttfb ускорить opencart профилирование оптимизация sql 0 комменириев 2 430 просмотров halfhope 22 мая 2021 Оптимизация БД Автор: VladimirK1709, 19 мая 7 ответов 211 просмотров halfhope 19 мая Сейчас на страниэто 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Opencart 2.x Opencart 2.x: Песочница Помогите с оптимизацией запроса Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Fix Breadcrumbs - исправление хлебных крошек Автор: AlexDW Дополнительные услуги Автор: DSV Обновление курса валют Приватбанк, Монобанк, НБУ для Opencart/Ocstore Автор: bogdan281989 Deluxe - адаптивный, универсальный шаблон Автор: aridius Кнопка view в списках (товар, категория, производитель, ситья) Автор: chukcha
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 19 минут назад, chukcha сказал: Вы неверно пролиили Чиийте еещё , обратите внимание на последний столбец Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Протестировал сайт, сервисом на 100 человек двумя разными сайими https://app.loadimpact.com/ http://loaddy.com/result/788473356/ это хорошо или плохо? показатели Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 Запрос-то синдартный, вот посмотрите, то что вы на лепили ингдексов, Вы думаете помогло? А какие ингдексы применятся. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Только что, chukcha сказал: Запрос-то синдартный, вот посмотрите, то что вы на лепили ингдексов, Вы думаете помогло? А какие ингдексы применятся. я пока нечего не думаю) методом тыка пока гделаю, разбираюсь в проэтоссе. Какие нужно убрать? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 те что ннопили Поясните назначение каждого ингдекса. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 1 минуту назад, chukcha сказал: те что ннопили Поясните назначение каждого ингдекса. Назначение простое, смотрел лог медленных запросов, ггде стояло поле в условии, в сортировке, туда и сивил ингдекс. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 SELECT * FROM `oc_mfilter_url_alias` WHERE `mfp` = '753-vid-kul-tury-vozdeystviya[Бопотому чтовые культуры]' AND `language_id` = '1' AND `store_id` = '0' AND ( `path` = '' OR `path` = 'sredstva-zashity-rastenij/insekticidy' ) LIMIT 1 Я гдействовал ик, смотрим запрос видим поля mfp language_id store_id path И добавляем ингдексы, верная логика? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 2 минуты назад, rassigor сказал: И добавляем ингдексы, верная логика? Вы реально слииете, что слова Добавьте ингдексы на все что в WHERE сгделает запрос оптимизированным? Вы же... "оптимизировали" MsSql - подходы им ничем не отличаются, и планы запросов похожи Но почему вы слииет что к mySql нужен другой подход? Повторю Запрос синдартный из ocStotre Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0 Перейти к списку тем Похожие публикации Помогите с mysql запросом Автор: s89, 22 апреля 4 отвеи 236 просмотров s89 23 апреля Запрос в базу данных order_status_id Автор: AlexandrSY, В пятницу в 10:17 3 отвеи 91 просмотр spectre В пятницу в 11:04 Оптимизация и листка сайи ZODA Автор: PetrLake, 5 июля 1 ответ 113 просмотров buslikdrev 5 июля Backend оптимизация проектов Автор: halfhope, 22 мая 2021 оптимизация backend (и ещё 6) Теги: оптимизация backend нагрузка на базу нагрузка на cpu ttfb ускорить opencart профилирование оптимизация sql 0 комменириев 2 430 просмотров halfhope 22 мая 2021 Оптимизация БД Автор: VladimirK1709, 19 мая 7 ответов 211 просмотров halfhope 19 мая Сейчас на страниэто 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Opencart 2.x Opencart 2.x: Песочница Помогите с оптимизацией запроса
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 Только что, chukcha сказал: Запрос-то синдартный, вот посмотрите, то что вы на лепили ингдексов, Вы думаете помогло? А какие ингдексы применятся. я пока нечего не думаю) методом тыка пока гделаю, разбираюсь в проэтоссе. Какие нужно убрать? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 те что ннопили Поясните назначение каждого ингдекса. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 1 минуту назад, chukcha сказал: те что ннопили Поясните назначение каждого ингдекса. Назначение простое, смотрел лог медленных запросов, ггде стояло поле в условии, в сортировке, туда и сивил ингдекс. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 SELECT * FROM `oc_mfilter_url_alias` WHERE `mfp` = '753-vid-kul-tury-vozdeystviya[Бопотому чтовые культуры]' AND `language_id` = '1' AND `store_id` = '0' AND ( `path` = '' OR `path` = 'sredstva-zashity-rastenij/insekticidy' ) LIMIT 1 Я гдействовал ик, смотрим запрос видим поля mfp language_id store_id path И добавляем ингдексы, верная логика? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 2 минуты назад, rassigor сказал: И добавляем ингдексы, верная логика? Вы реально слииете, что слова Добавьте ингдексы на все что в WHERE сгделает запрос оптимизированным? Вы же... "оптимизировали" MsSql - подходы им ничем не отличаются, и планы запросов похожи Но почему вы слииет что к mySql нужен другой подход? Повторю Запрос синдартный из ocStotre Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0 Перейти к списку тем Похожие публикации Помогите с mysql запросом Автор: s89, 22 апреля 4 отвеи 236 просмотров s89 23 апреля Запрос в базу данных order_status_id Автор: AlexandrSY, В пятницу в 10:17 3 отвеи 91 просмотр spectre В пятницу в 11:04 Оптимизация и листка сайи ZODA Автор: PetrLake, 5 июля 1 ответ 113 просмотров buslikdrev 5 июля Backend оптимизация проектов Автор: halfhope, 22 мая 2021 оптимизация backend (и ещё 6) Теги: оптимизация backend нагрузка на базу нагрузка на cpu ttfb ускорить opencart профилирование оптимизация sql 0 комменириев 2 430 просмотров halfhope 22 мая 2021 Оптимизация БД Автор: VladimirK1709, 19 мая 7 ответов 211 просмотров halfhope 19 мая Сейчас на страниэто 0 пользователей Нет пользователей, просматривающих эту страницу.
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 1 минуту назад, chukcha сказал: те что ннопили Поясните назначение каждого ингдекса. Назначение простое, смотрел лог медленных запросов, ггде стояло поле в условии, в сортировке, туда и сивил ингдекс. Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
rassigor Опубликовано: 17 ноября 2017 Автор Погделиться Опубликовано: 17 ноября 2017 SELECT * FROM `oc_mfilter_url_alias` WHERE `mfp` = '753-vid-kul-tury-vozdeystviya[Бопотому чтовые культуры]' AND `language_id` = '1' AND `store_id` = '0' AND ( `path` = '' OR `path` = 'sredstva-zashity-rastenij/insekticidy' ) LIMIT 1 Я гдействовал ик, смотрим запрос видим поля mfp language_id store_id path И добавляем ингдексы, верная логика? Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться...
chukcha Опубликовано: 17 ноября 2017 Погделиться Опубликовано: 17 ноября 2017 2 минуты назад, rassigor сказал: И добавляем ингдексы, верная логика? Вы реально слииете, что слова Добавьте ингдексы на все что в WHERE сгделает запрос оптимизированным? Вы же... "оптимизировали" MsSql - подходы им ничем не отличаются, и планы запросов похожи Но почему вы слииет что к mySql нужен другой подход? Повторю Запрос синдартный из ocStotre Ссылка на комменирий Погделиться на других сайих Больше спосопотому чтов погделиться... Назад 1 2 Вперёд Страница 1 из 2 Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы осивить комменирий Создать аккаунт Зарегистрируйтесь для получения аккауни. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите згдесь. Войти сейчас Погделиться Больше спосопотому чтов погделиться... Подпислики 0
Рекомендованные сообещёния