首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提高"max()-searching“SQL子查询的速度

如何提高"max()-searching“SQL子查询的速度
EN

Stack Overflow用户
提问于 2012-11-01 22:19:11
回答 1查看 152关注 0票数 3

我已经创建了这个良好但运行缓慢的SQL语句,用于从链接到项目列表中的项目的价目表中搜索最高的价格。Known是项目项目is:

代码语言:javascript
复制
SELECT i.ItemNr, i.ItemId, x.maxprice
  FROM itemlist i,
       pricelist p,
       (SELECT MAX (p2.price) AS maxprice, p2.ItemId
          FROM pricelist p2
         GROUP BY p2.ItemId) x
 WHERE i.ItemNr = 4711
   AND i.ItemId = p.ItemId
   AND i.ItemId = x.ItemId
   AND p.price = x.maxprice

商品清单中有大约100000种商品,价目表中有大约1000000种价格。这条语句真的很慢。我担心db-server会搜索我搜索的每一种商品的整个价目表。

我知道这个项目。但是,我是否可以搜索相应的itemid并将此itemid“发送”到子查询?如此子查询可以快速找到该商品的最高价格?或者我的问题还有其他的解决方案吗?

请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-01 22:26:20

我已经将不需要的连接删除回pricelist,因为您没有从其中选择任何列:

代码语言:javascript
复制
select i.ItemNr, i.ItemId, x.maxprice
from itemlist i
inner join (
    select MAX(price) as maxprice, ItemId
    from pricelist
    group by ItemId
    ) x on i.ItemId = x.ItemId
where i.ItemNr = 4711

这可能是一些索引调整将有所帮助,一旦你提供了一些信息,我可以提出一些建议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13179025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档