我有兩個表,我需要從他們每個人中選擇一列。 這必須在單個查詢中完成。 好消息是,兩列按照正確的方式排列,它們都包含相同數量的行。 現在,我知道我可以通過rowid加入兩張表,但由於它必須進行比較,所以速度很慢。在我的情況下,這是沒有必要的...我需要更像水平UNION ALL連接兩個相等長度的列。水平聯盟全部
在SQLite 3中有這樣的可能嗎?
謝謝。
TABLE1:
| timestamp | FIELD1 | FIELD2 | ...
| 12345678 | 000000 | 000000 | ...
| 00154789 | 000000 | 000000 | ...
TABLE2:
| temperature |
| 1000000000 |
| 2000000000 |
REQUIRED選擇輸出
| timestamp | temperature |
| 12345678 | 1000000000 |
| 00154789 | 2000000000 |
QUERY:
SELECT timestamp, temperature
FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.rowid = TABLE2.rowid;
這需要〜0.75s在我的測試應用程序。當我做兩個單獨的SELECT並在我的程序中稍後加入輸出時,它需要〜0.4s,但它不是很方便。最快的方法(〜0.23s)是在一個表中同時存在兩列,但由於我有多個共享相同時間戳的TABLE2版本,這是浪費。
@mu太短我的意思是「彼此相鄰」而不是「在彼此之上」。我需要兩個結果集中的短列,而不是一個長... – Petr 2011-05-11 22:08:28
這聽起來就像一個標準的連接,適當的索引應該快速。 – 2011-05-11 22:15:25
@mu太短rowid應該總是被索引,但是它比兩個單獨的SELECT還要慢(50%)。 – Petr 2011-05-11 23:08:42