Postgresql

對於這個基於函式的查詢,最合適的索引類型是什麼?

  • March 17, 2019

我正在使用 Postgres 9.5。我將執行很多此類查詢

SELECT * 
FROM mydb_article 
where regexp_replace(url, '\?.*$', '') = :url_wo_query_string

所以我想我需要在我的表上為該操作創建一個功能索引。所以我嘗試了

mydb=> CREATE INDEX my_article_idx ON mydb_article regexp_replace(url, '\?.*$', '');
ERROR:  syntax error at or near "regexp_replace"
LINE 1: CREATE INDEX my_article_idx ON mydb_article regexp_repl...

我的問題是,我應該使用的最合適的索引類型是什麼,如果是上面的,我還需要做什麼才能讓事情正常工作?

索引的表達式列表必須放在括號之間on table_name (a,b,c)。如果索引表達式不僅僅是一個列名,則表達式本身也必須用括號括起來:

CREATE INDEX my_article_idx 
  ON mydb_article ( (regexp_replace(url, '\?.*$', '')) );

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