Mysql 如何创建临时表

Mysql 如何创建临时表,mysql,Mysql,我有以下查询,它没有利用请求时的主键\u id 我希望通过创建一个临时表来实现一些优化,该表从值1开始,递增1000,直到1000000,这样我就可以执行类似的操作 SELECT request_id, exec_datetime FROM requests WHERE request_id IN (SELECT id FROM table); 是否有一种语法可以用于动态生成此表,或者我实际上必须创建此表 编辑 我注意到,使用此解决方案,查询执行速度提高了约8倍 CREATE TABLE du

我有以下查询,它没有利用请求时的主键\u id

我希望通过创建一个临时表来实现一些优化,该表从值1开始,递增1000,直到1000000,这样我就可以执行类似的操作

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;

不,没有一种语法可以为mysql生成这样的值,其他数据库(如postgres)也有这种语法。如果存在,则联接将比IN执行得更好


但是,我每次都会使用您的第一个查询,除非有证据表明它的性能差得令人无法接受

我明白了。。。如果您对我的用例使用您的连接建议的性能差异感兴趣,请查看我的编辑!还有,你能看看我今天发布的另一个问题吗?还有-是否有mysql语法,从1开始,每1000行插入一行,最多插入100万行?类似这样的东西插入到虚拟选择请求中,从请求中选择请求id mod 1000=1;但是上限是由我定义的,而不是请求表中的最大行数?
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;