SQL Tips:大数据量下的数据库日期操作问题
来源:互联网 发布:巫女服 知乎 编辑:程序博客网 时间:2024/05/29 11:01
说明:以下数据库操作基于SQL Server 2000
问题出现:
假设一个新闻系统,你需要获取最近一周的热点文章,一定会使用类似下面的SQL语句:
select top 50 newsID, newsTitle, newsRead from newstable where datediff("d", newsTime, getdate())<7 order by newsRead desc只要对newsID,newsRead,newsTime都有索引,用查询分析器分析成本发现成本非常小,在newstable数据量小的情况下,访问速度非常快。可是最近发现,当newstable到达200万条记录的时候,这条看似简单的语句执行居然要1分钟以上。
解决问题:
这个问题排查比较简单,去掉order by一样很慢,只能断定是datediff造成的。我们尝试把上面的语句分成2段:
第一条语句:select min(newsID) from newstable where datediff("d", newsTime, getdate())<7其中[minID]是第一条语句的结果,我们发现:第二条语句执行非常快,关键是第一条慢。newsID和newsTime均有索引,这是为什么呢?
第二条语句:select top 50 newsID, newsTitle, newsRead from newstable where newsID>[minID] order by newsRead desc
换一个思路,第一条语句基本等价为
第三条语句:select max(newsID) from newstable where datediff("d", newsTime, getdate())>=7奇怪了,第三条语句执行起来飞快,虽然问题是曲线解决了,可这又是为什么?难道和索引的排序次序有关?欢迎大家讨论。
- SQL Tips:大数据量下的数据库日期操作问题
- SQL Tips:大数据量下的数据库日期操作问题
- 大数据量下的数据库日期操作问题
- 数据库大数据量的操作
- 大数据量下的SQL Server数据库自身优化
- 大数据量下的数据操作
- 关于大数据量的数据库设计问题
- 大数据量下快速获取 SQL Server 数据库表记录数的方法
- 大数据量下快速获取 SQL Server 数据库表记录数的方法
- 大数据量高并发的数据库优化,sql查询优化
- 大数据量高并发的数据库优化与sql优化
- 大数据量高并发的数据库优化,sql查询优化
- 大数据量高并发的数据库优化与sql优化
- 大数据量高并发的数据库优化与sql优化
- 大数据量高并发的数据库优化与sql优化
- mysql大数据量下的操作以及优化
- 大数据量下的数据库查询与插入如何优化
- 一个大数据量的修改SQL优化问题
- 技术不如你,但老板就是赏识他,为什么?
- SQL Tips:兼顾检索速度和精确性
- SQL Server与Oracle对比学习:表的管理和组织
- struts2——ServletActionContext
- Common Tasks :Connecting to the Local Host as the Current User
- SQL Tips:大数据量下的数据库日期操作问题
- 为什么大部分创业公司都活不过5年?
- 第八周上机任务1-撞错体验
- 解决数学中的问题——两点间距离!
- 非常漂亮日历JS代码
- P41课后练习 赋初值的办法 对china加密
- Oracle中创建视图
- Android 解决程序启动时的黑屏问题
- Linux 脚本编写基础