这个查询语句有两个问题:

  1. 在主查询中,使用了子查询来获取最小的ticket_price。虽然这可以实现功能,但是会导致查询性能较差,因为子查询需要在每一行上执行。可以通过使用JOIN操作来优化查询。

  2. 使用了两次相同的条件(cid='1' AND fid='1'),这会导致重复的计算。可以通过使用临时表或者WITH子句来避免重复计算。

下面是优化后的查询语句:

WITH min_price AS ( SELECT MIN(ticket_price) AS min_price FROM slice WHERE cid='1' AND fid='1' ) SELECT slice.*, min_price.min_price FROM slice JOIN min_price ON 1=1 WHERE cid='1' AND fid='1'

这个优化后的查询将使用WITH子句来计算最小的ticket_price,并将结果存储在临时表min_price中。然后,通过JOIN操作将临时表和slice表连接起来,以获取所需的结果。这样可以避免重复计算,并提高查询性能

SELECT MINSELECT ticket_price FROM slice WHERE cid=1 AND fid=1 FROM slice WHERE cid=1 AND fid=1 有什么问题 该怎么优化

原文地址: http://www.cveoy.top/t/topic/iFez 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录