我正在使用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