缓慢的 SELECT 语句,可能是由于 WHERE?

问题描述 投票:0回答:1

数据库有几百万行。

这是为了找到价格高于平均价格的产品:

SELECT ProductName, Price FROM Products
WHERE Price > (SELECT AVG(Price) FROM Products);

但是,速度相当慢。

我认为这是因为它重新计算了每一行的平均值。

有没有办法优化这个查询?

尝试了几种不同类型的查询,但我认为我遗漏了一些东西。

sql time-series questdb
1个回答
0
投票

速度缓慢确实是由于计算每一行造成的。

WITH AvgPrice AS (
    SELECT AVG(Price) AS AvgPrice FROM Products
)
SELECT p.ProductName, p.Price
FROM Products p, AvgPrice ap
WHERE p.Price > ap.AvgPrice;

此方法使用

WITH
创建一个“CTE”,计算一次平均价格。然后,它使用该值与每种产品的价格进行比较。效率更高。

© www.soinside.com 2019 - 2024. All rights reserved.