智能刊登gaussdb 慢sql 排名第7,64次/小时 平均时间:11秒
2.解决方案
语句优化建议:
- 建议使用as关键字显示声明别名,隐式别名'`P_Product` m'可替换为更易懂的形式'`P_Product` AS m'。
- 建议使用as关键字显示声明别名,隐式别名'`M_Mercadolibre_Listing` l'可替换为更易懂的形式'`M_Mercadolibre_Listing` AS l'。
- 使用`IS NULL`或`IS NOT NULL`将可能导致引擎放弃使用索引而进行全表扫描。看看是否可以改造,查询发现=‘’ 的数据6990行, M_Mercadolibre_Listing表:11834807行,
- 最外层Select未指定Where条件,可能返回比预期更多的行。
3.原sql
SELECT l.*
FROM (SELECT `CustomerId` AS `CustomerId`, `Sku` AS `Sku`
FROM `P_Product` m
WHERE `CustomerId` = 1
AND EXISTS (SELECT *
FROM `P_Market_Product_Review`
WHERE `CustomerId` = `m`.`CustomerId`
AND `MarketId` = 70
AND `Sku` = `m`.`Sku`
AND `IsForbidSale` = 1)
AND EXISTS (SELECT *
FROM `P_Product_ProhibitionSaleMarket`
WHERE `CustomerId` = `m`.`CustomerId`
AND `Sku` = `m`.`Sku`
AND `MarketId` = 70)
) p
INNER JOIN (SELECT *
FROM `M_Mercadolibre_Listing` l
WHERE `Id` < 17430771
AND `CustomerId` = 1
AND NOT (`Sku` = ''
OR `Sku` IS NULL)
AND `OrderSourceId` IN (9779)
AND `OrderSourceId` IN (9779)
AND `OnlineStatus` IN (4, 1, 2)
AND EXISTS (SELECT *
FROM `M_Mercadolibre_Listing_Site`
WHERE 1 = 1
AND `Status` IN ('active', 'under_review', 'paused')
AND `CustomerId` = `l`.`CustomerId`
AND `OrderSourceId` = `l`.`OrderSourceId`
AND `ProductId` = `l`.`ProductId`)
AND CASE WHEN `IsAutoPublish` = 1 THEN 1 ELSE 0 END IN (1, 0)
) l ON `p`.`CustomerId` = `l`.`CustomerId`
AND `p`.`Sku` = `l`.`Sku`
ORDER BY `l`.`Id` DESC
LIMIT 0, 100
参考 解决方案 优化
看看业务上是否可以优化