Size: a a a

2020 May 22

E

Eugene in ru_mysql
SQL_CALC_FOUND_ROWS всегда будет сканить все
источник

E

Eugene in ru_mysql
лучше его вообще не использовать
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
Eugene
SQL_CALC_FOUND_ROWS всегда будет сканить все
это надо тогда идти в ядро и выковыривать. оно нужно для пагинации
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
Viktor Sh
Там еще в карточке отображается количество товаров в этой же категории
давай запросы с конкретных страниц, где есть where и др. ваш запрос выше он просто сканирует 180к товаров, у которых есть категория
источник

VS

Viktor Sh in ru_mysql
🇻 🇱 🇦 🇩
buffer pool size выкрутил?
# Query_time: 5.600648  Lock_time: 0.000520  Rows_sent: 10  Rows_examined: 1280210  Rows_affected: 0
источник

VS

Viktor Sh in ru_mysql
Стало чуть лучше, но не 1 сек
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
Viktor Sh
# Query_time: 5.600648  Lock_time: 0.000520  Rows_sent: 10  Rows_examined: 1280210  Rows_affected: 0
скроткр раз запускал запрос?
источник

VS

Viktor Sh in ru_mysql
# Query_time: 8.109653  Lock_time: 0.000613  Rows_sent: 0  Rows_examined: 1280210  Rows_affected: 0
источник

VS

Viktor Sh in ru_mysql
второй раз
источник

VS

Viktor Sh in ru_mysql
Eugene
SQL_CALC_FOUND_ROWS всегда будет сканить все
Он какраз вообще не роляет
источник

VS

Viktor Sh in ru_mysql
что он есть, что нет, на время не влияет, может на тысячные доли...
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
Viktor Sh
что он есть, что нет, на время не влияет, может на тысячные доли...
убирай groupby
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
но тогда у тебя один товар-одна категоиря
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
источник

VS

Viktor Sh in ru_mysql
Сам чистый запрос из слоуЛога:
источник

VS

Viktor Sh in ru_mysql
SELECT SQL_CALC_FOUND_ROWS products.product_id, IF(shared_descr.product_id IS NOT NULL, shared_descr.product, descr1.product) as product, products.product_type, products.parent_product_id FROM cscart_products as products  LEFT JOIN cscart_product_descriptions as descr1 ON descr1.product_id = products.product_id AND descr1.lang_code = 'ru'  LEFT JOIN cscart_product_prices as prices ON prices.product_id = products.product_id AND prices.lower_limit = 1 INNER JOIN cscart_products_categories as products_categories ON products_categories.product_id = products.product_id INNER JOIN cscart_categories ON cscart_categories.category_id = products_categories.category_id  AND (cscart_categories.usergroup_ids = '' OR FIND_IN_SET(0, cscart_categories.usergroup_ids) OR FIND_IN_SET(1, cscart_categories.usergroup_ids)) AND cscart_categories.status IN ('A', 'H')   LEFT JOIN cscart_ult_product_descriptions shared_descr ON shared_descr.product_id = products.product_id  AND shared_descr.company_id = 1 AND shared_descr.lang_code = 'ru' WHERE 1  AND cscart_categories.company_id = 1 AND (products.usergroup_ids = '' OR FIND_IN_SET(0, products.usergroup_ids) OR FIND_IN_SET(1, products.usergroup_ids)) AND products.status IN ('A') AND prices.usergroup_id IN (0, 0, 1) AND products.parent_product_id = 0 GROUP BY products.product_id   ORDER BY products.timestamp desc, products.product_id ASC  LIMIT 0, 10;
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
Viktor Sh
SELECT SQL_CALC_FOUND_ROWS products.product_id, IF(shared_descr.product_id IS NOT NULL, shared_descr.product, descr1.product) as product, products.product_type, products.parent_product_id FROM cscart_products as products  LEFT JOIN cscart_product_descriptions as descr1 ON descr1.product_id = products.product_id AND descr1.lang_code = 'ru'  LEFT JOIN cscart_product_prices as prices ON prices.product_id = products.product_id AND prices.lower_limit = 1 INNER JOIN cscart_products_categories as products_categories ON products_categories.product_id = products.product_id INNER JOIN cscart_categories ON cscart_categories.category_id = products_categories.category_id  AND (cscart_categories.usergroup_ids = '' OR FIND_IN_SET(0, cscart_categories.usergroup_ids) OR FIND_IN_SET(1, cscart_categories.usergroup_ids)) AND cscart_categories.status IN ('A', 'H')   LEFT JOIN cscart_ult_product_descriptions shared_descr ON shared_descr.product_id = products.product_id  AND shared_descr.company_id = 1 AND shared_descr.lang_code = 'ru' WHERE 1  AND cscart_categories.company_id = 1 AND (products.usergroup_ids = '' OR FIND_IN_SET(0, products.usergroup_ids) OR FIND_IN_SET(1, products.usergroup_ids)) AND products.status IN ('A') AND prices.usergroup_id IN (0, 0, 1) AND products.parent_product_id = 0 GROUP BY products.product_id   ORDER BY products.timestamp desc, products.product_id ASC  LIMIT 0, 10;
о. то что надо
источник

E

Eugene in ru_mysql
а explain уже был?
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
Eugene
а explain уже был?
analyze был
источник

🇻

🇻 🇱 🇦 🇩 in ru_mysql
Переслано от Viktor Sh
Limit: 10 row(s) (no early end due to SQL_CALC_FOUND_ROWS)  (actual time=0.247..8549.401 rows=10 loops=1)
-> Group (no aggregates)  (actual time=0.235..8094.313 rows=182728 loops=1)
-> Nested loop inner join  (cost=80854.10 rows=178198) (actual time=0.181..6889.122 rows=182728 loops=1)
-> Index scan on products using PRIMARY  (cost=18484.80 rows=178198) (actual time=0.126..909.123 rows=182728 loops=1)
-> Index lookup on products_categories using pt (product_id=products.product_id)  (cost=0.25 rows=1) (actual time=0.013..0.019 rows=1 loops=182728)
источник