【发布时间】:2014-06-20 20:53:38
【问题描述】:
我有一个包含 900 万条记录的 HISTORY 表。我需要找到按年、按月创建的记录。我使用的是查询 1,但是它超时了几次。
SELECT
year(created) as year,
MONTHNAME(created) as month,
count(*) as ymcount
FROM
HISTORY
GROUP BY
year(created), MONTHNAME(created);
我决定添加where year(created),这次查询需要 30 分钟(是的,需要很长时间)才能执行。
SELECT
year(created) as year,
MONTHNAME(created) as month,
count(*) as ymcount
FROM
HISTORY
WHERE
year(created) = 2010
GROUP BY
year(created), MONTHNAME(created) ;
我正计划在created 时间戳列上添加索引,但在此之前,我需要征求意见(因为索引这么大的表需要很长时间)。
考虑到在列上使用年份函数,在 created(timestamp) 列上添加索引会提高性能吗?
【问题讨论】:
-
你使用什么数据库系统?
-
它的 db2.. 我忘了标记.. 任何方式都应该是一个常见问题。
-
是的,但是使用正确的标签,您可能会得到比没有更好的答案。而且它比错误的sql-server 标签要好得多。
-
可用的 DB2 索引类型取决于平台。您指的是 DB2 for i、LUW 还是 z/OS?
标签: sql db2 query-optimization query-tuning