Office中国论坛/Access中国论坛

标题: 以日期字段作为查询条件时,速度变慢 [打印本页]

作者: 老鬼    时间: 2017-5-19 10:53
标题: 以日期字段作为查询条件时,速度变慢
最近不知道怎么回事,可能跟公司为了防患那个该死的勒索病毒打了一些补丁有关,一些以日期字段作为条件的查询突然变得非常慢,甚至等了半天都出不来结果。具体表现在:
以 where format(日期类型字段,"yyyymm")="201704"为条件的变得非常慢,但如果改为 where 日期类型字段>=#2017-4-1# and 日期类型字段<=#2017-4-30#速度又正常(between and 估计速度也行,没试)。
还有上次说的那个,where 日期类型字段=dmax("日期","表")速度也是非常慢,改用SQL嵌套就正常了。
本来好好的,为什么现在就出问题了呢?高手帮忙看看有什么通过服务器设置可以解决的,因为代码太多懒得改。
作者: roych    时间: 2017-5-19 11:17
这个当文本处理,肯定慢一些的。而且,个人建议不要把表达式写在左边,这个也是效率不高的一种写法。你可以like '201704*',虽然like也是慢一些——同样是因为日期改为文本的缘故。
日期字段是当数值存储在数据库中的,而数据库处理数值类型要比文本快很多。因此最好的写法依然是between and。如果觉得不方便拿上个月的日期,可以用系统日期改一下。例如:

DateSerial(year(now()),month(now())-1,1)……上个月的1号(即2017-4-1)
DateSerial(year(now()),month(now()),0)……上个月的月底(即2017-4-30)
居于某些原因,大部分人不建议用Today()函数,而改为now()

作者: 老鬼    时间: 2017-5-25 15:37
只能改写代码了……




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3