Mysql 合并多个SQL查询以提高效率

Mysql 合并多个SQL查询以提高效率,mysql,sql,Mysql,Sql,如何将这两个SQL查询组合成一个查询以提高速度和效率 SELECT price FROM table LIMIT 30 SELECT AVG(price) as avg FROM table 它不会更快或更高效,但我可以看到它的需求,比如尝试将一个值与平均值进行比较,比如: SELECT t.value, avgSubQ.theAvg, t.value / avgSubQ.theAvg AS relativeToAvg FROM table AS t INNER JOIN (SELECT AV

如何将这两个SQL查询组合成一个查询以提高速度和效率

SELECT price FROM table LIMIT 30
SELECT AVG(price) as avg FROM table

它不会更快或更高效,但我可以看到它的需求,比如尝试将一个值与平均值进行比较,比如:

SELECT t.value, avgSubQ.theAvg, t.value / avgSubQ.theAvg AS relativeToAvg
FROM table AS t
INNER JOIN (SELECT AVG(value) AS theAvg FROM table) AS avgSubQ
LIMIT 30;

由于avg将生成1条记录,所以您可以使用交叉连接

SELECT price, B.mavg 
FROM table 
CROSS JOIN (SELECT AVG(price) as mavg FROM table) B
LIMIT 30
请尝试此查询 从表30中选择价格、平均价格作为平均价格


这里的每一行都将复制平均价格,但您将在一个查询中得到您想要的

我不完全确定你在优化什么。。。查询是否运行缓慢,或者您只是想进行一些过早的微优化?您建议如何组合它们?一个是价格列表,另一个是这些价格的平均值。您希望如何对这些信息进行分组或显示?@Siyual我有大约2000万行数据,希望一切都尽可能快possible@Dresden这基本上是问题的症结所在。我想知道这是否可行,因为正如你所说,一个是列表,另一个是单个项目。最后,我想用PHP呼应出来,并在页面上显示结果。第一个查询选择30个任意行。无论你做什么,平均价格都将主导结果。实际上,你只会得到一个随机价格;每次的结果都是一行。尝试以下操作:从表中选择价格、平均价格,从表中选择平均价格作为平均价格作为发送;