Можно ли индексировать «ВЫБРАТЬ имя_домена из доменов, ГДЕ« x.example.com », как имя_домена», где имя_домена содержит «% .example.com» - PullRequest
0 голосов
/ 14 октября 2010

Эй, я пытаюсь создать систему, соответствующую доменным именам.Хотя приведенный выше запрос будет работать для меня, возможно ли вообще его проиндексировать?

У меня нет доступа к БД, чтобы делать какие-то умные вещи, поскольку я использую Heroku для размещения своего приложения, но я могу добавитьИндексы достаточно просты?

Спасибо!

Редактировать:

Я бы хотел сопоставить подстановочные имена доменов в моей базе данных.Итак, у меня есть таблица со столбцом с именем domain_name, и она может содержать что-то вроде «% .example.com», чтобы соответствовать, если я передам в качестве входного параметра x.example.com или hello.example.com.

1 Ответ

3 голосов
/ 14 октября 2010

Использовать функцию реверса и индекс функции.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');
...