gpt4 book ai didi

SQL Server 2008 : Decimal column in where clause decimal part effects query speed

转载 作者:行者123 更新时间:2023-12-03 01:09:34 24 4
gpt4 key购买 nike

我有一个小数(15,10) 列,其中包含创建日期的OLE 自动化格式。当你执行像

这样的查询时
SELECT * FROM SOMETABLE WHERE RECORDTIMEOA BETWEEN 41667 AND 41667.9999999999 --Decimal Part is 10 characters

查询在 8 或 9 秒内返回所有结果。但是,您不使用 41667 整数值,而是使用 41667.0000000000,然后查询将返回 1 秒内的所有结果。当您将 9 或 8 个字符放入第二个小数部分时,也会发生这种情况,例如

SELECT * FROM SOMETABLE WHERE RECORDTIMEOA  BETWEEN 41667 AND 41667.99999999 --Decimal part is 8 characters

我在该列上有一个非聚集索引,也许它会影响这个问题,所以我想知道以下查询之间有什么区别,为什么第一个查询在 8 秒内返回,而其他查询在 1 秒内返回?

SELECT * FROM SOMETABLE WHERE RECORDTIMEOA  BETWEEN 41667 AND 41667.9999999999
SELECT * FROM SOMETABLE WHERE RECORDTIMEOA BETWEEN 41667 AND 41667.9999999
SELECT * FROM SOMETABLE WHERE RECORDTIMEOA BETWEEN 41667.0000000000 AND 41667.9999999999

如果您能提供帮助,请告诉我..

更新:我正在为查询添加两个执行计划

This is the execution plan of slow query.

This is the execution plan of fast query.

UPDATE :这是应用 CAST 方法后的执行计划 This is the execution plan after CAST method applied.

最佳答案

这里可能正在进行数据转换,导致索引无法使用。最好的办法是查看 SSMS 为两个查询生成的查询计划,并查看是否对较慢的查询进行扫描而不是查找。

如果两个查询都在进行查找,则可能是缓存的情况。这些行(和查询计划)已经在内存中并被缓存,以实现更快的查询。

关于SQL Server 2008 : Decimal column in where clause decimal part effects query speed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21406670/

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