簡體   English   中英

在PostgreSQL中,“ to_char()”使用的CPU是否比“ BETWEEN”使用的CPU多?

[英]Does “to_char()” use more CPU than “BETWEEN” in PostgreSQL

我正在尋找以下語句之間最友好的處理器SQL語句。

在以下兩種情況下,SQL都應返回:今天是"last_time_hit"字段的記錄數。

陳述1:

SELECT COUNT(*) 
FROM chrono 
WHERE to_char(last_time_hit, 'YYYY-MM-DD') = to_char(CURRENT_TIMESTAMP, 'YYYY-MM-DD')

陳述2:

SELECT COUNT(*) 
FROM chrono 
WHERE last_time_hit BETWEEN CURRENT_DATE AND CURRENT_DATE - interval '1 second'

從某種意義上說是的。 第二個查詢可以使用last_time_hit上的索引,這可以使查詢運行得快得多。 即使在這種情況下沒有索引,在其他情況下(如果有)使用BETWEEN是一個好習慣。

通常,函數的使用會排除索引的使用-基於表達式的索引除外。 (在第一種情況下,Postgres可能會對索引進行完全掃描;這比掃描表略有效率,但不是通常在使用索引時獲得的巨大勝利。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM