sql - 排序时间戳日期的两个 sql

标签 sql performance oracle datestamp

我有 98w 行数据。当我想用 pub_time 对我的数据进行排序时,我发现了一个有趣的事情。

这是 SQL:

select * 
from t_p_blog_article_info t  
order by t.pub_time desc

花了 19 秒。
select * 
from t_p_blog_article_info t 
where t.pub_time > to_date( '1900-01-01 01:00:00', 'yyyy-mm-dd   hh24:mi:ss ')  
order by t.pub_time desc

花费 0.2 秒。

我想知道,为什么?

最佳答案

您可能在表上的 pub_time 上有一个索引。

因此,第二个查询可以利用该索引仅返回指定日期之后具有非空日期的记录,而第一个查询必须查询整个表。

关于sql - 排序时间戳日期的两个 sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9684567/

相关文章:

oracle - 查找每个分区的列中的最大值

php - 从 MySQL 获取数据的更有效方法

sql - 用 NULL 初始化数字

oracle - 在 grails 数据库迁移中使用 PL SQL

java - 为什么 GWT 中的多个 RPC 调用会显着降低响应时间?

asp.net - 在生产服务器中分析 asp.net 网站的可能方法?

c# - 在 C# 中比较多组数据重叠的最有效方法是什么

Python - 如何根据 DF 和其中的数据制作 SQL "Create Table"语句?

javascript - 根据所选选项显示 SQL 查询

mysql - 用于统计所有 child 论坛主题和帖子的 SQL 查询