[英]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.