Vj_*_*_in 6 oracle plsql duplicates
当我尝试在大型表上创建唯一索引时,我得到一个独特的约束错误.在这种情况下,唯一索引是4列的复合键.
是否有一种有效的方法来识别除以下之外的重复项:
select col1, col2, col3, col4, count(*)
from Table1
group by col1, col2, col3, col4
having count(*) > 1
Run Code Online (Sandbox Code Playgroud)
上面的解释计划显示了具有极高成本的全表扫描,并且只想找到是否有其他方法.
谢谢 !
首先尝试在这四列上创建一个非唯一索引.这将花费O(n log n)时间,但也将减少执行select到O(n log n)所需的时间.
你在这里有点绑定 - 无论你怎样切片,整个表必须至少读一次.天真算法在O(n 2)时间内运行,除非查询优化器足够聪明以构建临时索引/表.