优化700万数据量的SQL查询:SELECT ds.sku_code FROM drug_inner_store
优化包含700万数据的SQL查询:SELECT ds.sku_code FROM drug_inner_store
本文将探讨如何优化以下SQL查询,该查询涉及一个包含700万数据的表drug_inner_store:
SELECT ds.sku_code
FROM `drug_inner_store` as ds
left join store as s on s.id = ds.store_id
left join drug as d on d.id=ds.drug_id
where ds.stock = 0
and s.state = true
and d.state=true
group by ds.sku_code
为了优化以上SQL查询,你可以尝试以下几个方法:
-
添加索引:在
drug_inner_store、store和drug表中的相关列上添加索引,以加快查询速度。在drug_inner_store表中添加索引的列可以是store_id和drug_id,在store表中添加索引的列可以是id和state,在drug表中添加索引的列可以是id和state。 -
避免使用
left join:如果不需要返回store和drug表中的其他列,可以使用inner join代替left join,这样可以减少连接操作和数据读取,提高查询性能。 -
使用子查询:将条件
ds.stock = 0、s.state = true和d.state = true分别作为子查询,然后将子查询的结果与drug_inner_store表进行连接,可以提高查询效率。
下面是优化后的SQL查询:
SELECT ds.sku_code
FROM (
SELECT *
FROM drug_inner_store
WHERE stock = 0
) as ds
JOIN store as s ON s.id = ds.store_id AND s.state = true
JOIN drug as d ON d.id = ds.drug_id AND d.state = true
GROUP BY ds.sku_code
请注意,具体的优化方法可能因数据库的类型和结构而有所不同。建议在进行更改之前,先在测试环境中进行测试和性能评估。
原文地址: https://www.cveoy.top/t/topic/pjWo 著作权归作者所有。请勿转载和采集!