有很多結構一樣的表(大約100個),其中有一個設備id欄位并建有索引。現在需要一次查詢大約2000個設備id。怎么查詢這100個表里符合條件的資料比較快呢?我現在的查詢就是
SELECT * FROM table_name1 where in(設備id1,設備id2,.......,設備id2000)
UNION ALL
SELECT * FROM table_name2 where in(設備id1,設備id2,.......,設備id2000)
.....
UNION ALL
SELECT * FROM table_name100 where in(設備id1,設備id2,.......,設備id2000)
但是這樣寫的話查詢效率太慢。往往需要好幾分鐘。請問怎么優化一下比較好呢。
每個表大約1,2百萬條資料。
用的是PostgreSQL 資料庫。但是感覺那個版塊人太少,所以只能再這個板塊發了。
uj5u.com熱心網友回復:
試試把要查的值放到一個表中,然后 JOIN 看看效率uj5u.com熱心網友回復:
這個估計很難優化了,走了索引了,那100個表*2000記錄的IO擺在這呢,需要時間。uj5u.com熱心網友回復:
放到臨時表嗎。因為設備id是搜索項,用戶有可能會選擇1,2個設備id查,有可能會選擇1000個查,最多的話是2000個左右。
uj5u.com熱心網友回復:
那不加索引就會快了嗎
uj5u.com熱心網友回復:
不加索引走全表就更慢了。關鍵開銷是IOuj5u.com熱心網友回復:
當然放臨時表
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/98124.html
標籤:MySQL
上一篇:一個作業狗的哀嚎...求大神指教
