gpt4 book ai didi

asp.net - SQL MAX() 函数很慢,有没有更好的方法?

转载 作者:行者123 更新时间:2023-12-04 03:45:41 26 4
gpt4 key购买 nike

我有一个 SQL 数据库和 ASP.NET Web 应用程序,我的大部分查询都涉及 SQL max 函数。

例如,下面的查询需要大约。在 ASP.NET 网站和 SSMS 上执行 36 秒(使用探查器时)。

SELECT MAX(CONVERT(FLOAT,ISNULL(Runhrs,Runho))) - 
MIN(CONVERT(FLOAT,ISNULL(Runhrs,Runho))) AS ACTUALHOURSRUN
FROM REPORTINGSYSTEM.DBO.HL_LOGS
WHERE ID_LOCATION = @ID_LOCATION AND
CONVERT(VARCHAR,TIME_STAMP,102)
BETWEEN @STARTDATE AND @ENDDATE

有问题的表有大约。 5,000,000 条记录和 45 列。

执行查询以减少执行时间的最好/最快/最有效的方法是什么?

提前致谢...

最佳答案

ID_LOCATION 和 TIME_STAMP 上的索引是一个不错的选择。

但是,当您将 TIME_STAMP 字段转换为 VARCHAR 时,这将阻止它使用索引。相反,重新处理查询以消除执行 CONVERT 的需要,而是使用 DATETIME 值。

例如

SELECT MAX(CONVERT(FLOAT,ISNULL(Runhrs,Runho))) - MIN(CONVERT(FLOAT,ISNULL(Runhrs,Runho))) AS ACTUALHOURSRUN 
FROM REPORTINGSYSTEM.DBO.HL_LOGS
WHERE ID_LOCATION = @ID_LOCATION AND TIME_STAMP >= @STARTDATE AND TIME_STAMP < @ENDDATE

确保@STARTDATE 和@ENDDATE 也是 DATETIME 参数(我假设这是 TIME_STAMP 列的数据类型)

我还想问 Runhrs/Runho 列是什么数据类型?如果还没有存储为 FLOAT/DECIMAL,那么它们就不能像最合适的数据类型那样存储吗?

关于asp.net - SQL MAX() 函数很慢,有没有更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15114541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com