[英]Improve performance of the SQL query (DB2)
我需要获取符合特定条件的记录的文件名,但是我意识到执行查询的速度非常慢。 我已经添加了索引,但是还是很慢,如何才能提高性能呢??? 我正在使用DB2。 请帮忙,谢谢。
表格(FILE)(数据量-大约100000)
INDEX(类别,FILE_ID)
表(记录)(数据量-约50000000)
INDEX(CREATE_DATE,TYPE,FILE_ID)
SELECT NAME
FROM FILE
WHERE CATEGORY = ? AND
FILE_ID IN (SELECT FILE_ID FROM RECORD WHERE CREATE_DATE = ? AND TYPE = ? )
联接表。
select f.name
from f join record r on f.file_id = r.file_id
where f.category = ?
尝试使用INNER JOIN
语法:
select file.name
from file inner join record using(file_id)
where file.category_id=? and record.create_date=? and record.type=?
带有记录表的索引(文件ID,创建日期,类型)。
这不会给你重复的结果
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 = ?
加入应该可以解决您的问题。
有时您还需要重新组织(REORG)表和索引,以提高慢查询的性能。
您可能会发现,使用where子句将“表文件”放入临时表中可以加快处理速度……
例如...
创建一个临时表,然后从表文件“ Where Cateogry =?”中插入所有记录 然后将该表连接到记录
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.