小编Mos*_*aic的帖子

删除重复的记录,中间没有变化

我有一个产品表,我每天在其中插入大约 150,000 条记录。它们中的大多数都是多余的,但由于新的到期日期,我需要保留它们。我每天从 30 个供应商中的大约 5 个那里获得产品提要。每个供应商都有大约 35,000 种独特的产品。任何产品都不能属于多个供应商。

创建表 vendor_prices (
  id 序列主键,
  供应商整数非空,
  sku 字符变化 (25) NOT NULL,
  category_name 字符变化(100)非空,
  价格数字(8,5)非空,
  没有时区的有效日期时间戳,
  不带时区 DEFAULT 的 expire_date 时间戳(now() + '1 year'::interval)
);

我正在尝试删除没有价格变化且不再是该产品的最后更新的不相关记录,例如:

  生效日期价格
  '2015-05-01' $1.99 
  '2015-05-02' $1.99删除
  '2015-05-03' $1.59 
  '2015-05-04' $1.99 
  '2015-05-05' $1.99删除
  '2015-05-06' $1.99保留新的到期日期

所以每次加载后(我认为一次对一个供应商来说会更容易)我想做某种删除。这是我想出的长期无效的解决方案。

CREATE OR REPLACE FUNCTION remove_vendor_price_dupes(_vendor integer)
  RETURNS integer AS
$BODY$
BEGIN
    -- Delete Redundant prices
    delete from vendor_prices
    where id in (
      select id from (
        select vp1.id, vp1.vendor, …
Run Code Online (Sandbox Code Playgroud)

postgresql performance delete greatest-n-per-group postgresql-performance

5
推荐指数
1
解决办法
387
查看次数