sql - 从 PostgreSQL 中的时间戳中提取日期的最有效方法是什么?

标签 sql database performance postgresql

有表单的查询

select * from foo
where created_on::date = '2014/1/1'

select * from foo
where date_trunc('day', created_on) = '2014/1/1'

select * from foo
where date(created_on) = '2014/1/1'

在什么条件下不同的查询会表现得更好/更差?三个选项中哪个最有效?

最佳答案

总结评论,您的第一个和第三个解决方案是相同的。根据@Nick Barnes 的说法,转换为日期只需使用 date 函数。

这些选项,加上选项 2,需要对表的每一行运行一个函数,因此即使您有索引,也不能使用它。

假设 created_on 上有一个索引,这是您最好的选择:

select * from foo
where created_on >= '2014/1/1 00:00:00'
  and created_on < '2014/1/2 00:00:00';

关于sql - 从 PostgreSQL 中的时间戳中提取日期的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24891725/

相关文章:

mysql - SQL 查询以连接结果中的列

sql - T-sql 查询以 CSV 格式输出值

Javascript 创建元素问题

performance - 如何使用 F# 习语提高性能

sql - 如何根据其他列(同一行)中的值更新表所有行中的列?

c# - 在 ASP.NET MVC 中创建数据库回调的最有效方法

database - 版本跟踪,使用 django 自动更改数据库模式

时间序列数据的 Django 模型

AngularJS:将本地化的用户输入数据存储在翻译 json 文件或数据库中

javascript - 内联 Javascript 代码和纯 Javascript 代码之间的最佳性能是什么?