我正在尝试通过匹配时间戳字段来连接两个表,加上或减去一秒。
SELECT t1.id, t2.id
FROM ctc.table1 t1
INNER JOIN ctc.table2 t2
ON EXTRACT(EPOCH FROM t1.timestamp)
BETWEEN EXTRACT(EPOCH FROM t2.timestamp) - 1
AND EXTRACT(EPOCH FROM t2.timestamp) + 1
是否有更高效的方式来编写此查询?
最佳答案
正如 Dale 在评论中指出的那样
ON t1."timestamp" BETWEEN
t2."timestamp" - INTERVAL '1' SECOND AND
t2."timestamp" + INTERVAL '1' SECOND
Craig Ringer 提出的变体可以使用通用索引,而您的变体只能使用专门构建的索引,例如
create index the_index_name on ctc.table1(extract(epoch from timestamp))
关于sql - 模糊时间戳加入 Postesql 并获得更好的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24748796/