2012-11-26 148 views
0

我不上request_id如何創建臨時表

SELECT request_id, exec_datetime FROM requests 
WHERE request_id mod 1000 = 1; 

我希望通過創建與值1開始的臨時表來實現一些優化採取主鍵的優勢,下面的查詢和增量由1000一路攀升至1,000,000,這樣我可以執行這樣的事情

是否有語法我可以使用動態生成此表還是我實際上是創建該表?

編輯

我注意到了執行查詢有關8X與此變通方法更快

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; 

回答

1

沒有,沒有一個語法生成像MySQL的值(其它數據庫如Postgres的有這樣的語法)。如果有,加入會比IN表現更好。

但是,我會每次都使用您的第一個查詢,除非有證據表明它的執行效果令人無法接受。

+0

我明白了......如果您對我的用例感興趣,請使用您對連接的建議,查看我的編輯!另外 - 你能看看我今天發佈的其他問題嗎? http://stackoverflow.com/questions/13557405/when-running-explain-if-the-field-value-for-key-is-not-null-but-extra-is-blank – user784637

+0

此外 - 是否有一個MySQL插入從1開始到最多100萬的每1000行的語法?像這樣'INSERT INTO dummy(SELECT request_id FROM requests WHERE request_id mod 1000 = 1);'但是上限是由我定義的,而不是'request'表中的最大行數? – user784637