【发布时间】:2018-05-09 18:05:35
【问题描述】:
我有一个实体-属性-值格式的数据库表,如下所示:
我希望选择“实体”和“属性”列具有相同值但“值”列具有不同值的所有行。所有三列具有相同值的多行应被视为单行。我实现这一点的方法是使用 SELECT DISTINCT。
SELECT entity_id, attribute_name, COUNT(attribute_name) AS NumOcc
FROM (SELECT DISTINCT * FROM radiology) x
GROUP BY entity_id,attribute_name
HAVING COUNT(attribute_name) > 1
但是,我了解到使用 SELECT DISTINCT 的成本很高。我计划在非常大的表上使用此查询,我正在寻找一种优化此查询的方法,可能不使用 SELECT DISTINCT。
我使用的是 PostgreSQL 10.3
【问题讨论】:
标签: sql postgresql query-optimization postgresql-10