我有两个表,我需要从他们每个人中选择一列。 这必须在单个查询中完成。 好消息是,两列按照正确的方式排列,它们都包含相同数量的行。 现在,我知道我可以通过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