Don*_*per 5 sql postgresql postgresql-9.5
此查询查找域的后缀:
SELECT
DISTINCT ON ("companyDomain".id)
"companyDomain".domain,
"publicSuffix".suffix
FROM
"companyDomain"
INNER JOIN
"publicSuffix"
ON
REVERSE("companyDomain".domain) LIKE REVERSE("publicSuffix".suffix) || '%'
ORDER BY
"companyDomain".id, LENGTH("publicSuffix".suffix) DESC
Run Code Online (Sandbox Code Playgroud)
编辑:注意这也适用于子域。
您可以摆弄此处的示例并使用pev可视化计划。我已经尝试向表中添加覆盖索引,但它们最终没有被查询规划器使用。也许还有另一个查询可能更有效?
怎么样:
SELECT
DISTINCT ON ("companyDomain".id) "companyDomain".domain,
"publicSuffix".suffix
FROM
"companyDomain"
INNER JOIN "publicSuffix" ON RIGHT(
domain,
- POSITION('.' IN domain) + 1
) = "publicSuffix".suffix
ORDER BY
"companyDomain".id,
LENGTH("publicSuffix".suffix) DESC;
Run Code Online (Sandbox Code Playgroud)
我们获取域中第一个的位置.,然后使用该值的负值(+1 来包含第一个)从左侧.提取后缀。RIGHT
看起来它运行得更快,从 2500 毫秒到 120 毫秒。
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |