我正在嘗試計算昨天創建的所有記錄。有一個created_at列,它被編入索引。對索引日期時間字段進行計數(*)過濾運行時間太長
如果我運行
explain
select count(*) from events where created_at::date = current_date - 1;
它說
Aggregate (cost=14365728.05..14365728.06 rows=1 width=0)
-> Index Only Scan using index_events_created_at on events (cost=0.57..14362310.20 rows=1367140 width=0)
Filter: ((created_at)::date = (('now'::cstring)::date - 1))
所以事件樣的知道有多少行也有。但
select count(*) from events where created_at::date = current_date - 1;
查詢本身保持運行下去。這是爲什麼?
如果使用:'select event(*)from events'會發生什麼? – McNets
「永遠在跑」......你的意思是字面意思,還是跑得比你想的長?如果運行時間很長(但最終會結束),結果是否接近解釋計劃中出現的數字? –
'created_at'是什麼類型? –