【发布时间】:2014-11-26 09:48:25
【问题描述】:
我最近正在编写一个查询,我必须将时间戳转换为日期,然后对转换后的日期执行聚合。因此,一种简单的方法是使用 group by 中的转换公式(与创建列时相同),它确实有效。
但是,它似乎并不是最优化的方式。我能感觉到性能在恶化。有没有更好的方法?
查询正在使用视图,其结构如下:
SELECT ORG ,
CONVERT(DATE, CREATION_DATE, 101) ,
SKU_CODE ,
SKU_NAME ,
COUNT(UNIT) AS Production
FROM dbo.abcd_efgh_ijk(123, 'abc', NULL, '10009', NULL,
'2014-11-01 00:00:00', '2014-11-30 23:59:59') SFSTAT
WHERE PASS_DATETIME IS NOT NULL
GROUP BY ORG ,
SKU_CODE ,
CONVERT(DATE, CREATION_DATE, 101) ,
SKU_NAME
HAVING COUNT(UNIT) >= 100;
很高兴在这里学习优化。
【问题讨论】:
-
看起来您的
select columns list是column names in group by的较短版本,但应该相同 -
那是我的错,他们是一样的
-
也许你应该调整你的
Table Valued Function -
表函数是什么样的?我会支持在那儿寻找性能改进的建议
标签: sql sql-server performance sql-server-2008 query-optimization