首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何减少DB2中具有自内连接的大型数据表的查询时间?

如何减少DB2中具有自内连接的大型数据表的查询时间?
EN

Database Administration用户
提问于 2016-10-11 17:57:12
回答 1查看 723关注 0票数 -1

我在DB2 .This表中有一个名为'ASSETINFO‘的表,有300万条记录。我想要从表中获取基于'Asset范围‘的记录,因此我在Id列的同一表上应用了内部联接。目前,该表有202964行,但运行时间超过20分钟。我尝试了下面的查询,即使这需要超过15分钟。

代码语言:javascript
运行
复制
SELECT count(*)
FROM AI
INNER JOIN AI AI2
ON AI2.ASSET_ID = AI.ASSET_ID
WHERE AI2.ASSET_ID = 123;

我的问题是:

代码语言:javascript
运行
复制
select AI.ASSET_ID,
AI.ASSET_NAME,
AI.ASSET_START_PRIZE,
AI.ASSET_END_PRICE,
AI3.ASSET_START_PRIZE,
AI3.ASSET_END_PRICE,
AI.ASSET_AREA_CODE
FROM ASSETINFO AI
INNER JOIN 
    ( SELECT
    AI2.ASSET_ID,
    AI2.ASSET_NAME,
    AI2.ASSET_START_PRIZE,
    AI2.ASSET_END_PRICE,
    AI2.ASSET_AREA_CODE
    FROM ASSETINFO AI2
    WHERE AI2.ASSET_ID=123
    GROUP BY 
    AI2.ASSET_ID,
    AI2.ASSET_NAME,
    AI2.ASSET_START_PRIZE,
    AI2.ASSET_END_PRICE,
    AT2.ASSET_AREA_CODE
    ) AI2
ON AI3.ASSET_ID = AI.ASSET_ID,
AND AI3.ASSET_AREA_CODE = AI.ASSET_AREA_CODE
AND AI.ASSET_START_PRIZE > AI3.ASSET_START_PRIZE
AND AI.ASSET_END_PRICE < AI3.ASSET_END_PRICE
WHERE AI.ASSET_ID=123
    GROUP BY 
    AI3.ASSET_ID,
    AI3.ASSET_NAME,
    AI3.ASSET_START_PRIZE,
    AI3.ASSET_END_PRICE,
    AI3.ASSET_AREA_CODE
    ORDER BY 
    AI3.ASSET_ID, AI3.ASSET_NAME;

请建议,如果在上述情况下,我如何减少时间?我是否需要使用索引,如果是的话,哪个索引对我的情况是有用的?

EN

回答 1

Database Administration用户

发布于 2016-10-11 20:25:27

如果这需要15分钟,那么事情就不对劲了。

ASSET_ID被索引了吗?

你最近有没有分割索引?

代码语言:javascript
运行
复制
SELECT count(*)
FROM AI
INNER JOIN AI AI2
ON AI2.ASSET_ID = AI.ASSET_ID
WHERE AI2.ASSET_ID = 123;
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/152002

复制
相关文章

相似问题

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