CREATE Procedure doseed(p1 int) BEGIN SET @x = 0; REPEAT SET @x = @x + 1; INSERT INTO `CALL` (firstname, lastname, email, current) VALUES ('rauan', 'rakhmet', 'rauanktl@ya.ru', NOW() + INTERVAL @x MINUTE ); until @x >= p1 END REPEAT; END; CALL doseed(500000); EXPLAIN Select * From `CALL` Where id in (100, 101, 102); CREATE Procedure docont(p1 int) BEGIN SET @x = 0; REPEAT SET @x = @x + 1; INSERT INTO `contact` (start, end) VALUES (NOW() - INTERVAL 10000 MINUTE, NOW() + INTERVAL 10000 MINUTE ); until @x >= p1 END REPEAT; END; CALL docont(2000); SELECT count(*) FROM `CALL` c WHERE EXISTS (SELECT * FROM (SELECT * FROM contact WHERE contact.id < 4000) as tp WHERE c.id=tp.id and c.current > tp.start and c.current < tp.end); UPDATE contact SET end = now() + INTERVAL 16 YEAR WHERE id > 0;