J'ai deux tables et j'ai besoin de sélectionner une colonne de chacune d'entre elles. Cela doit être fait dans une seule requête. La bonne nouvelle est que les deux colonnes sont ordonnées dans le bon sens et qu'elles contiennent toutes les deux le même nombre de lignes. Maintenant, je sais que je pourrais joindre les deux tables par rowid, mais c'est lent car il doit faire cette comparaison. Dans mon cas ce n'est pas nécessaire ... J'ai besoin de quelque chose de plus comme UNION ALL horizontal pour concaténer deux colonnes de même longueur.horizontal UNION ALL
Est-ce que quelque chose comme ça est possible dans SQLite 3?
Merci.
Tableau 1:
| timestamp | FIELD1 | FIELD2 | ...
| 12345678 | 000000 | 000000 | ...
| 00154789 | 000000 | 000000 | ...
TABLE2:
| temperature |
| 1000000000 |
| 2000000000 |
REQUIRED OUTPUT SELECT
| timestamp | temperature |
| 12345678 | 1000000000 |
| 00154789 | 2000000000 |
QUERY:
SELECT timestamp, temperature
FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.rowid = TABLE2.rowid;
Cela prend ~ 0.75s dans mon application de test. Quand je fais deux SELECT séparés et rejoins les sorties plus tard dans mon programme cela prend ~ 0.4s, mais ce n'est pas très pratique. Le moyen le plus rapide (~ 0.23s) est d'avoir les deux colonnes dans une table, mais c'est gaspilleur car j'ai plusieurs versions de TABLE2 qui partagent les mêmes horodatages.
@mu est trop court Par horizontal, je veux dire "l'un à côté de l'autre" plutôt que "l'un sur l'autre". J'ai besoin de deux colonnes courtes dans le jeu de résultats au lieu d'une longue ... – Petr
Cela ressemble exactement à une jointure standard et une indexation correcte devrait faire vite. –
@mu est trop court rowid devrait toujours être indexé, mais il est encore beaucoup plus lent (50%) que deux SELECT séparés. – Petr