Size: a a a

2020 May 23

IZ

Ilia Zviagin in MySQL
Viktor Sh
query_cache_size в 8-ой версии уже не выставить
Это очень хорошо
источник

IZ

Ilia Zviagin in MySQL
Viktor Sh
Вот Джойн:
SELECT
 SQL_CALC_FOUND_ROWS
 products.product_id,
 products.product_type,
 products.parent_product_id
FROM
 cscart_products as products
INNER JOIN
 cscart_products_categories as products_categories
   ON products_categories.product_id = products.product_id
GROUP BY products.product_id
ORDER BY products.product_id ASC
LIMIT 0, 10;
Убирай calculate found rows....
источник

VS

Viktor Sh in MySQL
Ilia Zviagin
Убирай calculate found rows....
Увы, ничего не изменилось :(((
источник

VS

Viktor Sh in MySQL
# Time: 2020-05-22T22:33:34.159395Z
# User@Host: cs_user[cs_user] @ localhost []  Id:   309
# Schema: cs_komfort  Last_errno: 0  Killed: 0
# Query_time: 8.462233  Lock_time: 0.000783  Rows_sent: 0  Rows_examined: 1280210  Rows_affected: 0
# Bytes_sent: 539
SET timestamp=1590186805;
SELECT  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, AVG(cscart_discussion_rating.rating_value) AS average_rating, cscart_discussion.type AS discussion_type, cscart_discussion.thread_id AS discussion_thread_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' LEFT JOIN cscart_discussion ON cscart_discussion.object_id = products.product_id AND cscart_discussion.object_type = 'P' LEFT JOIN cscart_discussion_posts ON cscart_discussion_posts.thread_id = cscart_discussion.thread_id AND cscart_discussion_posts.status = 'A' LEFT JOIN cscart_discussion_rating ON cscart_discussion.thread_id = cscart_discussion_rating.thread_id AND cscart_discussion_rating.post_id = cscart_discussion_posts.post_id AND cscart_discussion_rating.rating_value != 0 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  HAVING average_rating > 0  ORDER BY average_rating desc, products.product_id ASC  LIMIT 0, 10;
источник

VS

Viktor Sh in MySQL
Всё те же 8 сек :(
источник

C

Constantine in MySQL
Viktor Sh
# Time: 2020-05-22T22:33:34.159395Z
# User@Host: cs_user[cs_user] @ localhost []  Id:   309
# Schema: cs_komfort  Last_errno: 0  Killed: 0
# Query_time: 8.462233  Lock_time: 0.000783  Rows_sent: 0  Rows_examined: 1280210  Rows_affected: 0
# Bytes_sent: 539
SET timestamp=1590186805;
SELECT  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, AVG(cscart_discussion_rating.rating_value) AS average_rating, cscart_discussion.type AS discussion_type, cscart_discussion.thread_id AS discussion_thread_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' LEFT JOIN cscart_discussion ON cscart_discussion.object_id = products.product_id AND cscart_discussion.object_type = 'P' LEFT JOIN cscart_discussion_posts ON cscart_discussion_posts.thread_id = cscart_discussion.thread_id AND cscart_discussion_posts.status = 'A' LEFT JOIN cscart_discussion_rating ON cscart_discussion.thread_id = cscart_discussion_rating.thread_id AND cscart_discussion_rating.post_id = cscart_discussion_posts.post_id AND cscart_discussion_rating.rating_value != 0 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  HAVING average_rating > 0  ORDER BY average_rating desc, products.product_id ASC  LIMIT 0, 10;
Блин, мне одному сложно читать большие однострочники SQL без подсветки синтаксиса🤔
источник

C

Constantine in MySQL
источник

IZ

Ilia Zviagin in MySQL
Viktor Sh
Вот Джойн:
SELECT
 SQL_CALC_FOUND_ROWS
 products.product_id,
 products.product_type,
 products.parent_product_id
FROM
 cscart_products as products
INNER JOIN
 cscart_products_categories as products_categories
   ON products_categories.product_id = products.product_id
GROUP BY products.product_id
ORDER BY products.product_id ASC
LIMIT 0, 10;
Ок, давай глядеть на твой запрос...
Он обрабатывает 200 тысяч строк, для каждой ищет во второй пары, потом группирует и сортируюет 200 + тысяч строк, и выводит 10.

Сколько там оно у тебя работает?
Я лично считаю, что ты должен быть просто счастлив , что запрос так быстро выполняется.
источник

IZ

Ilia Zviagin in MySQL
Viktor Sh
Всем привет!
Подскажите, куда копать?
Есть 2 таблицы по 200К записей всего. Самый простой left join без ограничений выполняется по 3-4 сек. Индексы прописаны и используются, сервер 4 ядра, 8ГБ оперативы. Версия Percona Server (GPL). Release 10. Версия mysql 8.0.19-10
3 секунды! На такое дерьмо!
Да ты просто везунчик!
источник

IZ

Ilia Zviagin in MySQL
Максим
Кто напишет sql запрос за 200р?
Ха  .... я знаю этого человека.
Это ТЫ!
источник

VS

Viktor Sh in MySQL
Ilia Zviagin
3 секунды! На такое дерьмо!
Да ты просто везунчик!
Сам удивляюсь, разработчики CS-Cart уверяли, что это один из самых быстрых CMS, а на деле приходиться ковыряться в чем-то вонючем...
источник

М

Максим in MySQL
Ilia Zviagin
Ха  .... я знаю этого человека.
Это ТЫ!
И че, ты все равно не сможешь мне помочь
источник

C

Constantine in MySQL
Максим
И че, ты все равно не сможешь мне помочь
Пиши свою проблему 🤔
источник

М

Максим in MySQL
Есть две таблицы:
Поля 1 таблицы: id, time, type
Поля 2 таблицы: id_c, id_r, name, p
Нужно получить из второй таблицы name, где (если type = 1, то id_c = id, иначе если type = 2, то id_r = id) и p = 0
источник

М

Максим in MySQL
Не уверен, что кто-то ее здесь сможет решить
источник

М

Максим in MySQL
Кто по-настоящему шарит?
источник

KV

Kirill Vasin in MySQL
Да, меньше, чем за 200р никто за такое не возьмётся
источник

М

Максим in MySQL
200р дам тому, кто решит
источник

IZ

Ilia Zviagin in MySQL
Максим
И че, ты все равно не сможешь мне помочь
Не, не смогу, не делаю учебные задания.
источник

IZ

Ilia Zviagin in MySQL
Максим
200р дам тому, кто решит
Слушай, 200 руб за то, чтобы продать душу дьяволу?
Неее....
источник