主キーを利用しない次のクエリがあります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;