Size: a a a

SqlCom.ru - Стиль жизни SQL

2021 February 03

MC

Makha Cloud in SqlCom.ru - Стиль жизни SQL
Андрей Агеев
версия субд?
это в azure, там sqlite , но то там также эта формула прописывается
источник

KT

Konstantin Taranov in SqlCom.ru - Стиль жизни SQL
Elvira
Мы нет😅 а в альфе это в требованиях, где про это можно прочитать и потрогать(практика)
В альфе жесткое собеседование, без реальной практики по этим технологиям вряд ли пройдете

Попробуйте в локобанк или в озон, мвидео
источник

E

Elvira in SqlCom.ru - Стиль жизни SQL
Вот хочу потрогать, даже если не пройду) может куда нибудь возьмут, где с этим можно поработать
источник

KT

Konstantin Taranov in SqlCom.ru - Стиль жизни SQL
Elvira
Вот хочу потрогать, даже если не пройду) может куда нибудь возьмут, где с этим можно поработать
⚠️ всем я советую потратить 30 минут (а лучше 60) своего времени и прежде чем что-то читать по SQL Server, сначала переварить это http://rusanu.com/2013/08/01/understanding-how-sql-server-executes-a-query/

Далее список проверенных статей: https://sqlserver-kit.org/en/articles (ищите по тегам или просто по названию)

https://www.sqlservercentral.com/stairways/stairway-to-sql-server-extended-events
https://www.sqlservercentral.com/articles/service-broker-part-1-service-broker-basics

Книги
ВСЕ НИЖЕ БЕСПЛАТНО (правда у Red Gate с регистрацией, но без смс)

Developer https://www.red-gate.com/products/dba/sql-monitor/entrypage/execution-plans
DBA https://www.red-gate.com/library/troubleshooting-sql-server-a-guide-for-accidental-dbas

Объемный список из книг: https://github.com/ktaranov/sqlserver-kit#free-ebooks

Книги все таки немного устаревший формат, советую статью http://rusanu.com/2013/08/01/understanding-how-sql-server-executes-a-query/ (большая, но всяко меньше книги) и если разработка, то все статьи этого парня http://www.sommarskog.se/query-plan-mysteries.html (там у него на сайте 7 других есть, все длинные, но отличные). Этого минимума за глаза хватит.

Если Aure интересует, то https://www.brentozar.com/archive/2019/09/free-azure-and-sql-server-2019-training-from-microsoft/
источник

E

Elvira in SqlCom.ru - Стиль жизни SQL
Konstantin Taranov
⚠️ всем я советую потратить 30 минут (а лучше 60) своего времени и прежде чем что-то читать по SQL Server, сначала переварить это http://rusanu.com/2013/08/01/understanding-how-sql-server-executes-a-query/

Далее список проверенных статей: https://sqlserver-kit.org/en/articles (ищите по тегам или просто по названию)

https://www.sqlservercentral.com/stairways/stairway-to-sql-server-extended-events
https://www.sqlservercentral.com/articles/service-broker-part-1-service-broker-basics

Книги
ВСЕ НИЖЕ БЕСПЛАТНО (правда у Red Gate с регистрацией, но без смс)

Developer https://www.red-gate.com/products/dba/sql-monitor/entrypage/execution-plans
DBA https://www.red-gate.com/library/troubleshooting-sql-server-a-guide-for-accidental-dbas

Объемный список из книг: https://github.com/ktaranov/sqlserver-kit#free-ebooks

Книги все таки немного устаревший формат, советую статью http://rusanu.com/2013/08/01/understanding-how-sql-server-executes-a-query/ (большая, но всяко меньше книги) и если разработка, то все статьи этого парня http://www.sommarskog.se/query-plan-mysteries.html (там у него на сайте 7 других есть, все длинные, но отличные). Этого минимума за глаза хватит.

Если Aure интересует, то https://www.brentozar.com/archive/2019/09/free-azure-and-sql-server-2019-training-from-microsoft/
😘 спасиб
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
Makha Cloud
это в azure, там sqlite , но то там также эта формула прописывается
на sqliteonline select id, max(id)over() from demo работает, возможно в тексте что-то лишнее - может спец символ?...
источник

MC

Makha Cloud in SqlCom.ru - Стиль жизни SQL
Андрей Агеев
на sqliteonline select id, max(id)over() from demo работает, возможно в тексте что-то лишнее - может спец символ?...
3-й день голову ломаю)
Может что-то с раскладкой на винде?
источник

E

Elvira in SqlCom.ru - Стиль жизни SQL
а попробуй в другом редакторе запустить
источник

MC

Makha Cloud in SqlCom.ru - Стиль жизни SQL
Elvira
а попробуй в другом редакторе запустить
Точно
источник

AK

Anton Kartsev AlarmC... in SqlCom.ru - Стиль жизни SQL
Коллеги добрый день.
Достался запрос. Запрос выполняется 5 секунд mysql 5.4.
Основная проблема в:
GROUP BY и ORDER BY
Какие индексы нужно создать и помогут ли они?

Сам запрос
SELECT
   products.product_id, products.url, products.category_id, products.brand_id, products.model, products.description, products.body, products.hit, products.show_menu, products.order_num, products.small_image, products.large_image, DATE_FORMAT(products.created_at, '%Y-%m-%d') as created, DATE_FORMAT(products.updated_at, '%Y-%m-%d') as  modified, products.enabled, products.pricelist_comment as pricedescr, products.pre_order_days, products.rating, products.votes, products.header,
   brands.name as brand, brands.url as brand_url,
   categories.single_name as category, categories.name as category_name, categories.url as category_url, categories.image as category_image,
   pv.price,
   pv.variant_id,
   pv.stock,
   pv.sku,
   pv.old_price,
   pi.price as install_price,
   pi.install_id as install_id,
   pi.city_id as install_city_id,
   pi.ot as install_ot,
   pi.type as install_type,
   media.name as media_image,
   media.id as media_id
FROM products
        LEFT JOIN categories ON categories.category_id = products.category_id
        LEFT JOIN brands ON products.brand_id = brands.brand_id
        LEFT JOIN products_categories ON products.product_id = products_categories.product_id
        LEFT JOIN products_variants as pv ON products.product_id = pv.product_id
        LEFT JOIN products_installs as pi ON products.product_id = pi.product_id
        LEFT JOIN media ON products.product_id = model_id AND model_type = 'App\\Models\\Catalog\\Product' AND media.collection_name = 'main_image'
WHERE
       categories.enabled = 1
 AND products.enabled = 1
 AND (pv.city_id = 0 OR pv.city_id = 0 OR pv.city_id IS NULL) AND
   (pi.city_id = 0 OR pi.city_id = 0 OR pi.city_id IS NULL)
 AND ( (categories.category_id in(149) ) OR (products_categories.category_id in(149) ) )
GROUP BY products.product_id
ORDER BY
   CASE WHEN pv.stock = 0 AND products.pre_order_days = 0 THEN 1 ELSE 0 END,
   CASE WHEN (pv.price = 0 OR pv.price IS NULL) AND pi.price = 0 THEN 1 ELSE 0 END, products.order_num
LIMIT 0, 24;
источник

KT

Konstantin Taranov in SqlCom.ru - Стиль жизни SQL
Anton Kartsev AlarmCRM.ru
Коллеги добрый день.
Достался запрос. Запрос выполняется 5 секунд mysql 5.4.
Основная проблема в:
GROUP BY и ORDER BY
Какие индексы нужно создать и помогут ли они?

Сам запрос
SELECT
   products.product_id, products.url, products.category_id, products.brand_id, products.model, products.description, products.body, products.hit, products.show_menu, products.order_num, products.small_image, products.large_image, DATE_FORMAT(products.created_at, '%Y-%m-%d') as created, DATE_FORMAT(products.updated_at, '%Y-%m-%d') as  modified, products.enabled, products.pricelist_comment as pricedescr, products.pre_order_days, products.rating, products.votes, products.header,
   brands.name as brand, brands.url as brand_url,
   categories.single_name as category, categories.name as category_name, categories.url as category_url, categories.image as category_image,
   pv.price,
   pv.variant_id,
   pv.stock,
   pv.sku,
   pv.old_price,
   pi.price as install_price,
   pi.install_id as install_id,
   pi.city_id as install_city_id,
   pi.ot as install_ot,
   pi.type as install_type,
   media.name as media_image,
   media.id as media_id
FROM products
        LEFT JOIN categories ON categories.category_id = products.category_id
        LEFT JOIN brands ON products.brand_id = brands.brand_id
        LEFT JOIN products_categories ON products.product_id = products_categories.product_id
        LEFT JOIN products_variants as pv ON products.product_id = pv.product_id
        LEFT JOIN products_installs as pi ON products.product_id = pi.product_id
        LEFT JOIN media ON products.product_id = model_id AND model_type = 'App\\Models\\Catalog\\Product' AND media.collection_name = 'main_image'
WHERE
       categories.enabled = 1
 AND products.enabled = 1
 AND (pv.city_id = 0 OR pv.city_id = 0 OR pv.city_id IS NULL) AND
   (pi.city_id = 0 OR pi.city_id = 0 OR pi.city_id IS NULL)
 AND ( (categories.category_id in(149) ) OR (products_categories.category_id in(149) ) )
GROUP BY products.product_id
ORDER BY
   CASE WHEN pv.stock = 0 AND products.pre_order_days = 0 THEN 1 ELSE 0 END,
   CASE WHEN (pv.price = 0 OR pv.price IS NULL) AND pi.price = 0 THEN 1 ELSE 0 END, products.order_num
LIMIT 0, 24;
ну во-первых, вам сюда https://t.me/ru_mysql
а во-вторых, рекомендовать индексы по одному group by это лучше к гадалкам
источник

AK

Anton Kartsev AlarmC... in SqlCom.ru - Стиль жизни SQL
Спасибо
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Anton Kartsev AlarmCRM.ru
Коллеги добрый день.
Достался запрос. Запрос выполняется 5 секунд mysql 5.4.
Основная проблема в:
GROUP BY и ORDER BY
Какие индексы нужно создать и помогут ли они?

Сам запрос
SELECT
   products.product_id, products.url, products.category_id, products.brand_id, products.model, products.description, products.body, products.hit, products.show_menu, products.order_num, products.small_image, products.large_image, DATE_FORMAT(products.created_at, '%Y-%m-%d') as created, DATE_FORMAT(products.updated_at, '%Y-%m-%d') as  modified, products.enabled, products.pricelist_comment as pricedescr, products.pre_order_days, products.rating, products.votes, products.header,
   brands.name as brand, brands.url as brand_url,
   categories.single_name as category, categories.name as category_name, categories.url as category_url, categories.image as category_image,
   pv.price,
   pv.variant_id,
   pv.stock,
   pv.sku,
   pv.old_price,
   pi.price as install_price,
   pi.install_id as install_id,
   pi.city_id as install_city_id,
   pi.ot as install_ot,
   pi.type as install_type,
   media.name as media_image,
   media.id as media_id
FROM products
        LEFT JOIN categories ON categories.category_id = products.category_id
        LEFT JOIN brands ON products.brand_id = brands.brand_id
        LEFT JOIN products_categories ON products.product_id = products_categories.product_id
        LEFT JOIN products_variants as pv ON products.product_id = pv.product_id
        LEFT JOIN products_installs as pi ON products.product_id = pi.product_id
        LEFT JOIN media ON products.product_id = model_id AND model_type = 'App\\Models\\Catalog\\Product' AND media.collection_name = 'main_image'
WHERE
       categories.enabled = 1
 AND products.enabled = 1
 AND (pv.city_id = 0 OR pv.city_id = 0 OR pv.city_id IS NULL) AND
   (pi.city_id = 0 OR pi.city_id = 0 OR pi.city_id IS NULL)
 AND ( (categories.category_id in(149) ) OR (products_categories.category_id in(149) ) )
GROUP BY products.product_id
ORDER BY
   CASE WHEN pv.stock = 0 AND products.pre_order_days = 0 THEN 1 ELSE 0 END,
   CASE WHEN (pv.price = 0 OR pv.price IS NULL) AND pi.price = 0 THEN 1 ELSE 0 END, products.order_num
LIMIT 0, 24;
Надо полный запрос...
источник

AK

Anton Kartsev AlarmC... in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Надо полный запрос...
Дополнил
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Anton Kartsev AlarmCRM.ru
Коллеги добрый день.
Достался запрос. Запрос выполняется 5 секунд mysql 5.4.
Основная проблема в:
GROUP BY и ORDER BY
Какие индексы нужно создать и помогут ли они?

Сам запрос
SELECT
   products.product_id, products.url, products.category_id, products.brand_id, products.model, products.description, products.body, products.hit, products.show_menu, products.order_num, products.small_image, products.large_image, DATE_FORMAT(products.created_at, '%Y-%m-%d') as created, DATE_FORMAT(products.updated_at, '%Y-%m-%d') as  modified, products.enabled, products.pricelist_comment as pricedescr, products.pre_order_days, products.rating, products.votes, products.header,
   brands.name as brand, brands.url as brand_url,
   categories.single_name as category, categories.name as category_name, categories.url as category_url, categories.image as category_image,
   pv.price,
   pv.variant_id,
   pv.stock,
   pv.sku,
   pv.old_price,
   pi.price as install_price,
   pi.install_id as install_id,
   pi.city_id as install_city_id,
   pi.ot as install_ot,
   pi.type as install_type,
   media.name as media_image,
   media.id as media_id
FROM products
        LEFT JOIN categories ON categories.category_id = products.category_id
        LEFT JOIN brands ON products.brand_id = brands.brand_id
        LEFT JOIN products_categories ON products.product_id = products_categories.product_id
        LEFT JOIN products_variants as pv ON products.product_id = pv.product_id
        LEFT JOIN products_installs as pi ON products.product_id = pi.product_id
        LEFT JOIN media ON products.product_id = model_id AND model_type = 'App\\Models\\Catalog\\Product' AND media.collection_name = 'main_image'
WHERE
       categories.enabled = 1
 AND products.enabled = 1
 AND (pv.city_id = 0 OR pv.city_id = 0 OR pv.city_id IS NULL) AND
   (pi.city_id = 0 OR pi.city_id = 0 OR pi.city_id IS NULL)
 AND ( (categories.category_id in(149) ) OR (products_categories.category_id in(149) ) )
GROUP BY products.product_id
ORDER BY
   CASE WHEN pv.stock = 0 AND products.pre_order_days = 0 THEN 1 ELSE 0 END,
   CASE WHEN (pv.price = 0 OR pv.price IS NULL) AND pi.price = 0 THEN 1 ELSE 0 END, products.order_num
LIMIT 0, 24;
Предлагаю перенести в тематический чат https://t.me/mysql_db
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Anton Kartsev AlarmCRM.ru
Коллеги добрый день.
Достался запрос. Запрос выполняется 5 секунд mysql 5.4.
Основная проблема в:
GROUP BY и ORDER BY
Какие индексы нужно создать и помогут ли они?

Сам запрос
SELECT
   products.product_id, products.url, products.category_id, products.brand_id, products.model, products.description, products.body, products.hit, products.show_menu, products.order_num, products.small_image, products.large_image, DATE_FORMAT(products.created_at, '%Y-%m-%d') as created, DATE_FORMAT(products.updated_at, '%Y-%m-%d') as  modified, products.enabled, products.pricelist_comment as pricedescr, products.pre_order_days, products.rating, products.votes, products.header,
   brands.name as brand, brands.url as brand_url,
   categories.single_name as category, categories.name as category_name, categories.url as category_url, categories.image as category_image,
   pv.price,
   pv.variant_id,
   pv.stock,
   pv.sku,
   pv.old_price,
   pi.price as install_price,
   pi.install_id as install_id,
   pi.city_id as install_city_id,
   pi.ot as install_ot,
   pi.type as install_type,
   media.name as media_image,
   media.id as media_id
FROM products
        LEFT JOIN categories ON categories.category_id = products.category_id
        LEFT JOIN brands ON products.brand_id = brands.brand_id
        LEFT JOIN products_categories ON products.product_id = products_categories.product_id
        LEFT JOIN products_variants as pv ON products.product_id = pv.product_id
        LEFT JOIN products_installs as pi ON products.product_id = pi.product_id
        LEFT JOIN media ON products.product_id = model_id AND model_type = 'App\\Models\\Catalog\\Product' AND media.collection_name = 'main_image'
WHERE
       categories.enabled = 1
 AND products.enabled = 1
 AND (pv.city_id = 0 OR pv.city_id = 0 OR pv.city_id IS NULL) AND
   (pi.city_id = 0 OR pi.city_id = 0 OR pi.city_id IS NULL)
 AND ( (categories.category_id in(149) ) OR (products_categories.category_id in(149) ) )
GROUP BY products.product_id
ORDER BY
   CASE WHEN pv.stock = 0 AND products.pre_order_days = 0 THEN 1 ELSE 0 END,
   CASE WHEN (pv.price = 0 OR pv.price IS NULL) AND pi.price = 0 THEN 1 ELSE 0 END, products.order_num
LIMIT 0, 24;
Ну и в первую очередь у тебя запрос неверный.

Неправильно условия в WHERE и LEFT JOIN -ы написаны
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Anton Kartsev AlarmCRM.ru
Коллеги добрый день.
Достался запрос. Запрос выполняется 5 секунд mysql 5.4.
Основная проблема в:
GROUP BY и ORDER BY
Какие индексы нужно создать и помогут ли они?

Сам запрос
SELECT
   products.product_id, products.url, products.category_id, products.brand_id, products.model, products.description, products.body, products.hit, products.show_menu, products.order_num, products.small_image, products.large_image, DATE_FORMAT(products.created_at, '%Y-%m-%d') as created, DATE_FORMAT(products.updated_at, '%Y-%m-%d') as  modified, products.enabled, products.pricelist_comment as pricedescr, products.pre_order_days, products.rating, products.votes, products.header,
   brands.name as brand, brands.url as brand_url,
   categories.single_name as category, categories.name as category_name, categories.url as category_url, categories.image as category_image,
   pv.price,
   pv.variant_id,
   pv.stock,
   pv.sku,
   pv.old_price,
   pi.price as install_price,
   pi.install_id as install_id,
   pi.city_id as install_city_id,
   pi.ot as install_ot,
   pi.type as install_type,
   media.name as media_image,
   media.id as media_id
FROM products
        LEFT JOIN categories ON categories.category_id = products.category_id
        LEFT JOIN brands ON products.brand_id = brands.brand_id
        LEFT JOIN products_categories ON products.product_id = products_categories.product_id
        LEFT JOIN products_variants as pv ON products.product_id = pv.product_id
        LEFT JOIN products_installs as pi ON products.product_id = pi.product_id
        LEFT JOIN media ON products.product_id = model_id AND model_type = 'App\\Models\\Catalog\\Product' AND media.collection_name = 'main_image'
WHERE
       categories.enabled = 1
 AND products.enabled = 1
 AND (pv.city_id = 0 OR pv.city_id = 0 OR pv.city_id IS NULL) AND
   (pi.city_id = 0 OR pi.city_id = 0 OR pi.city_id IS NULL)
 AND ( (categories.category_id in(149) ) OR (products_categories.category_id in(149) ) )
GROUP BY products.product_id
ORDER BY
   CASE WHEN pv.stock = 0 AND products.pre_order_days = 0 THEN 1 ELSE 0 END,
   CASE WHEN (pv.price = 0 OR pv.price IS NULL) AND pi.price = 0 THEN 1 ELSE 0 END, products.order_num
LIMIT 0, 24;
FROM products
        LEFT JOIN categories ON categories.category_id = products.category_id

и тут же

WHERE
       categories.enabled = 1

Либо условие должно быть в ON join-а, либо JOIN не должен быть OUTER
источник

T

Timus in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Ну и в первую очередь у тебя запрос неверный.

Неправильно условия в WHERE и LEFT JOIN -ы написаны
а вот это тебя не сущает? pv.city_id = 0 OR pv.city_id = 0 OR pv.city_id IS NULL
ну да ладно. оффтопим)
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Timus
а вот это тебя не сущает? pv.city_id = 0 OR pv.city_id = 0 OR pv.city_id IS NULL
ну да ладно. оффтопим)
Да меня всё смущает, но сказал пока только про первое
источник

E

Elvira in SqlCom.ru - Стиль жизни SQL
Святая пюрешечка, что это
источник