这是单表查询 SELECT MINSELECT ticket_price FROM slice WHERE cid=1 AND fid=1 FROM slice WHERE cid=1 AND fid=1 有什么问题 该怎么优化
这个查询存在一个问题,就是将子查询放在了SELECT语句中,这会导致子查询在每行结果中都被执行一次,影响查询性能。
为了优化这个查询,可以使用JOIN语句来避免子查询的执行次数。
以下是优化后的查询语句:
SELECT s1.*, s2.min_ticket_price FROM slice s1 JOIN ( SELECT cid, fid, MIN(ticket_price) as min_ticket_price FROM slice WHERE cid='1' AND fid='1' GROUP BY cid, fid ) s2 ON s1.cid = s2.cid AND s1.fid = s2.fid
在优化后的查询中,首先使用子查询得到最小的ticket_price,然后将其与原始表进行JOIN操作,从而避免了重复执行子查询的问题。
原文地址: http://www.cveoy.top/t/topic/iFeE 著作权归作者所有。请勿转载和采集!