首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提高SQL查询(DB2)的性能

提高SQL查询(DB2)的性能
EN

Stack Overflow用户
提问于 2013-04-19 03:06:13
回答 5查看 2.2K关注 0票数 0

我需要获得符合特定条件的记录的文件名,但我意识到执行时查询非常慢。我增加了指数,但还是很慢,怎样才能提高性能呢?我正在使用DB2。帮帮忙,谢谢。

表(文件)(数据量-约100000)

  • FILE_ID
  • 名字
  • 类别

索引(类别,FILE_ID)

表(记录)(数据量-约50000000)

  • RECORD_ID
  • 数据
  • CREATE_DATE
  • 类型
  • FILE_ID

索引(CREATE_DATE,TYPE,FILE_ID)

代码语言:javascript
复制
SELECT NAME 
FROM FILE
WHERE CATEGORY = ? AND 
      FILE_ID IN (SELECT FILE_ID FROM RECORD WHERE CREATE_DATE = ? AND TYPE = ? )
EN

回答 5

Stack Overflow用户

发布于 2013-04-19 03:18:02

加入桌子吧。

代码语言:javascript
复制
select f.name
from f join record r on f.file_id = r.file_id
where f.category = ?
票数 1
EN

Stack Overflow用户

发布于 2013-04-19 03:18:53

尝试使用INNER JOIN语法:

代码语言:javascript
复制
select file.name
    from file inner join record using(file_id)
where file.category_id=? and record.create_date=? and record.type=?

对记录表使用索引(file_id、create_date、type)。

票数 1
EN

Stack Overflow用户

发布于 2013-04-19 03:43:08

这不会给你重复的结果

代码语言:javascript
复制
SELECT NAME 
FROM FILE F
JOIN (
    SELECT FILE_ID FROM RECORD WHERE CREATE_DATE = ? AND TYPE = ? 
    GROUP BY FILE_ID
) Q ON F.FILE_ID = Q.FILE_ID
WHERE CATEGORY = ?
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16096558

复制
相关文章

相似问题

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