我有以下查询,它没有利用主键request_id
SELECT request_id, exec_datetime FROM requests
WHERE request_id mod 1000 = 1;
我希望通过创建一个以值 1 开头并以 1000 一直递增到 1,000,000 的临时表来实现一些优化,以便我可以执行类似这样的操作
SELECT request_id, exec_datetime FROM requests
WHERE request_id IN (SELECT id FROM table);
有没有我可以用来动态生成这个表的语法,还是我真的必须创建这个表?
编辑
我注意到使用此解决方法查询的执行速度提高了大约 8 倍
CREATE TABLE dummy (
thousand INT(10) UNSIGNED,
UNIQUE(thousand)
);
INSERT INTO dummy (SELECT request_id FROM requests WHERE request_id mod 1000=1 );
SELECT r.request_id, r.exec_datetime FROM requests r
JOIN dummy d
ON d.thousand = r.request_id;