Postgresql

如何索引 WHERE (start_date >= ‘2013-12-15’)

  • April 2, 2014

我有一個名為 items 的表,在表內有一個 some_date 列,其中 date 作為數據類型。

我想知道如何用 PostgreSQL 索引 some_date 列

SELECT "items".* FROM "items" WHERE (some_date >= '2013-12-15')
對項目進行點陣圖堆掃描(成本=126.48..4671.78 行=6459 寬度=384)(實際時間=0.799..2.035 行=7511 循環=1)
重新檢查條件:(some_date >= '2014-03-30'::date)
-> index_items_on_some_date_and_end_date 上的點陣圖索引掃描(成本=0.00..124.86 行=6459 寬度=0)(實際時間=0.744..0.744 行=8777 循環=1)
索引條件:(some_date >= '2014-03-30'::date)
總執行時間:2.439 毫秒

我考慮過部分索引,但 some_date 在使用的​​值方面是靈活的。

您只需要在some_dateDB 欄位中添加一個 B-tree 索引。僅當您知道查詢參數並希望排除/包含特定範圍(http://www.postgresql.org/docs/current/static/indexes-partial.html)時,部分索引才有效。

另一種選擇是每天或每月對 DB 欄位使用表分區(http://www.postgresql.org/docs/current/static/ddl-partitioning.htmlsome_date,因此您可以輕鬆排除大量行。

引用自:https://dba.stackexchange.com/questions/62269