我有一个实体属性值格式的数据库表,如下所示:
我希望选择“实体”和“属性”列具有相同值但“值”列具有不同值的所有行。对于所有三列具有相同值的多行应被视为单行。我实现这一点的方法是使用 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