嘿,我正在尝试创建一个匹配通配符域名的系统。虽然上面的查询对我有用,但是可以对它进行索引吗?
我无法访问数据库做任何聪明的事情,因为我使用Heroku来托管我的应用程序,但我可以轻松添加索引吗?
谢谢!
编辑:
我想在我的数据库中匹配通配符域名。所以我有一个名为domain_name的列表,如果我将x.example.com或hello.example.com作为输入参数传入,则可以包含类似'%.example.com'的内容。
答案 0 :(得分:3)
使用反向功能和功能索引。 http://www.postgres.cz/index.php/PostgreSQL_SQL_Tricks
如果你使用Postgresql 9.1“反向”功能是内置的。
CREATE OR REPLACE FUNCTION reverse(varchar) RETURNS varchar AS $$
$reversed = reverse $_[0];
return $reversed;
$$ LANGUAGE plperlu IMMUTABLE;
CREATE INDEX rev_email ON users( (reverse(email) ) varchar_pattern_ops );
SELECT * FROM _users WHERE reverse(email) LIKE reverse ('%.cz');