我正在使用Postgres。帶索引的數據庫中不區分大小寫的搜索?
我在我的數據庫中有一個Artices表,它有一個url url的url url。這些都是爲了讓我可以在網站上顯示該表中的文章,因爲它不是「example.com/23323
」,而是「example.com/Funny_Thing_Happened_to_Me
」。 這足以實現,然後隨着文章數量的增長,我在表格中添加了一個指向url slugs的索引。
我已經意識到,雖然我希望能夠在網址中顯示大寫字母,但我希望它們在用戶輸入內容時不區分大小寫,並且我希望在網址中強制實現網址的唯一性不區分大小寫的方式。
是否有一種直接的方式,以不區分大小寫的方式基於文本列快速搜索,並以不區分大小寫的方式強制執行唯一性?
我試過用類似lower(url) =
的東西進行搜索,但是這會導致Postgres決定不使用索引。
感謝這似乎是要走的路。唯一的問題是我不能直接創建索引,因爲較低的(url)存在衝突,但除了修復數據之外,我看不到任何其他方法。 – 2010-07-30 21:24:20
@williamjones:將此索引添加爲目前非唯一的索引以獲得性能優勢。然後修復唯一性,創建一個新的唯一索引,然後刪除舊的索引。 – rfusca 2010-07-30 21:25:47