On 7/20/22 9:38 AM, Rama Krishnan wrote:

Reply to list also
Ccing list.
Hi ALL,

I have created the batch wise query but the variable is not working in the delete.


create or replace function sports_sale() returns void as $$
declare
    counter integer := 0;
    row_count integer :=0;
    start integer :=1;

begin

   SELECT sale_start_count INTO start FROM sale_delete_counter ORDER BY ID DESC LIMIT 1;    SELECT sale_loop_counter INTO counter FROM sale_delete_counter ORDER BY ID DESC LIMIT 1;
    SELECT count(*) INTO row_count FROM sports_sale_archive;
    SELECT ceil(row_count/10000) INTO row_count;
      while counter < row_count loop
        raise notice 'Counter %', counter;
       delete from sports_sale where id in (select id from sports_sale_archive WHERE id between start and start+9999);
        counter := counter + 1;
        start :=start+10000;
       INSERT INTO sale_delete_counter(sale_start_count,sale_loop_counter) VALUES(start,counter);
        exit when counter>5;
      end loop;
end;$$ language plpgsql;

1) I thought this was a date based deletion?

2) How do you know that the ids in "id between start and start+9999" actually exist?

3) Could this not be simplified to something like?:

create or replace function sports_sale() returns void as $$
declare
   counter integer;

begin
select count(*) into counter from sports_sale_archive where <date/id> between <start> and <end>;

     while counter > 0 loop
       raise notice 'Counter %', counter;
delete from sports_sale where id in (select id from sports_sale_archive WHERE id between <start> and <end> order by <date/id> limit 10000);
       counter := counter - 10000;
     end loop;
end;$$ language plpgsql;


Not tested and should be taken as starting point as it is not entirely clear to me what you are trying to achieve.


Here I have created the archive table based on created_date with more one year data. i want to execute this delete query using batch wise(each iteration 10K totally 50K records deletion per execution ). The issue was that the variable was not working in deletion subquery.
Regards

A.Rama Krishnan




--
Adrian Klaver
adrian.kla...@aklaver.com


Reply via email to