1 .问题分析
1.华为云 虎鲸及时销量 gaussdb慢sql,每天出现
分析发现是sql LIMIT 1664700, 300 偏移量太大,越大越慢这种查询,
分析发现表的id 的自增的,连续的,所以:改为: `Id` > 1362000 来过滤数据,LIMIT 300 查询数据条数的方式
测试原sql查询7秒查询出结果
优化后的sql查询1秒查询出结果
2. 解决方案
改为: `Id` > 1362000 来过滤数据,LIMIT 300 查询数据条数的方式
SELECT `Id`, `CustomerId`, `OrderSourceId`, `OrderSourceSku`, `ShipmentId`
, `QuantityShipped`, `FNSKU`, `QuantityReceived`, `FulfillmentNetworkSKU`, `QuantityInCase`
, `QuantitySending`, `ReceivedTime`, `SendingTime`, `FirstReceivedTime`, `FirstSendingTime`
, `EarlieComeinQty`, `EarlieComeinTime`, `LastComeinQty`, `LastComeinTime`, `LastModifierId`
, `LastModifier`, `LastModificationTime`, `CreatorId`, `Creator`, `CreationTime`
FROM `Amazon_ShipmentItem` FORCE INDEX (idx_amazon_shipmentitem_CreationTime_CustomerId)
WHERE `CustomerId` = 1 and `Id` > 1362000
ORDER BY `CreationTime` DESC
LIMIT 300;
3.原sql
SELECT `Id`, `CustomerId`, `OrderSourceId`, `OrderSourceSku`, `ShipmentId`
, `QuantityShipped`, `FNSKU`, `QuantityReceived`, `FulfillmentNetworkSKU`, `QuantityInCase`
, `QuantitySending`, `ReceivedTime`, `SendingTime`, `FirstReceivedTime`, `FirstSendingTime`
, `EarlieComeinQty`, `EarlieComeinTime`, `LastComeinQty`, `LastComeinTime`, `LastModifierId`
, `LastModifier`, `LastModificationTime`, `CreatorId`, `Creator`, `CreationTime`
FROM `Amazon_ShipmentItem` FORCE INDEX (idx_amazon_shipmentitem_CreationTime_CustomerId)
WHERE `CustomerId` = 1
ORDER BY `CreationTime` DESC
LIMIT 1664700, 300;
