设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2769|回复: 2
打印 上一主题 下一主题

[查询] 以日期字段作为查询条件时,速度变慢

[复制链接]
跳转到指定楼层
1#
发表于 2017-5-19 10:53:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近不知道怎么回事,可能跟公司为了防患那个该死的勒索病毒打了一些补丁有关,一些以日期字段作为条件的查询突然变得非常慢,甚至等了半天都出不来结果。具体表现在:
以 where format(日期类型字段,"yyyymm")="201704"为条件的变得非常慢,但如果改为 where 日期类型字段>=#2017-4-1# and 日期类型字段<=#2017-4-30#速度又正常(between and 估计速度也行,没试)。
还有上次说的那个,where 日期类型字段=dmax("日期","表")速度也是非常慢,改用SQL嵌套就正常了。
本来好好的,为什么现在就出问题了呢?高手帮忙看看有什么通过服务器设置可以解决的,因为代码太多懒得改。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2017-5-19 11:17:39 | 只看该作者
这个当文本处理,肯定慢一些的。而且,个人建议不要把表达式写在左边,这个也是效率不高的一种写法。你可以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()
3#
 楼主| 发表于 2017-5-25 15:37:35 | 只看该作者
只能改写代码了……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-26 01:50 , Processed in 0.086163 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表