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
编辑:注意这也适用于子域。
您可以摆弄此处的示例并使用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;
我们获取域中第一个的位置.,然后使用该值的负值(+1 来包含第一个)从左侧.提取后缀。RIGHT
看起来它运行得更快,从 2500 毫秒到 120 毫秒。
| 归档时间: | 
 | 
| 查看次数: | 132 次 | 
| 最近记录: |