我有一个表,其中一列包含 url 的子字符串。它总是没有方案的 url 的最左边部分。
ID | 领域 | 专栏 1 | 专栏2 |
---|---|---|---|
1个 | 例子.com | 价值1 | 值2 |
2个 | 例子.org | 价值3 | 值4 |
3个 | example.net/zh-CN | 值5 | 价值6 |
4个 | example.net/zh-CN | 值7 | 价值8 |
域中永远不会重叠,因此不会有 domain 的行example.net
,也不会有空的域。
我想搜索并找到给定 url 的匹配行,例如example.org/sub/sub/sub/test.html
它应该返回 id 为 2 的行。
到目前为止,我已经使用SELECT id FROM table WHERE 'example.org/sub/sub/sub/test.html' LIKE (domain || '%')
which 给出了我想要的,但它总是对表进行 seq 扫描,即使我在该domain
列上有一个索引。我希望 Postgres 可以得出一些结论并使用索引。
我怎样才能提高这个性能?