J'essaie de faire une jointure entre 8 tables et parce que chaque table a plus de 500 000 entrées, c'est très lent. Je veux savoir, avez-vous le meilleur moyen de rejoindre ces tables?Joindre plusieurs tables avec la même structure mais des données différentes
Toutes les tables a cette structure:
data_temprature:
+----+----------+-----+-----------+----------+
| ID_geo | NAME | Value | Date |
+--------+----------+-------+-----------------+
| 10005 | Madrid | 32 | 2017-06-12 08:00|
| 10005 | Madrid | 25 | 2017-06-12 09:00|
| 12701 | Paris | 23 | 2017-06-12 08:00|
| 13006 | Tokyo | 25 | 2017-06-12 11:00|
| 11132 | Sevilla | 27 | 2017-06-12 16:00|
| 21333 | London | 22 | 2017-06-12 17:00|
+--------+----------+-------+-----------------+
data_WeatherSimbol
+----+----------+-----+-----------+----------+
| ID_geo | NAME | Value | Date |
+--------+----------+-------+-----------------+
| 10005 | Madrid | A+ | 2017-06-12 08:00|
| 10005 | Madrid | A | 2017-06-12 09:00|
| 12701 | Paris | A- | 2017-06-12 08:00|
| 13006 | Tokyo | C- | 2017-06-12 11:00|
| 11132 | Sevilla | I+ | 2017-06-12 16:00|
| 21333 | London | D- | 2017-06-12 17:00|
+--------+----------+-------+-----------------+
Je veux faire une jointure pour obtenir ce résultat:
+----+----------+-----+-----------+----------+-----------------+
| ID_geo | NAME | Temperature | Simboles | Date |
+--------+----------+-------------+----------+-----------------+
| 10005 | Madrid | 32 | A+ | 2017-06-12 08:00|
| 10005 | Madrid | 25 | A | 2017-06-12 09:00|
| 12701 | Paris | 23 | A- | 2017-06-12 08:00|
| 13006 | Tokyo | 25 | C- | 2017-06-12 11:00|
| 11132 | Sevilla | 27 | I+ | 2017-06-12 16:00|
| 21333 | London | 22 | D- | 2017-06-12 17:00|
+--------+----------+-------------+----------+-----------------+
T écheveaux
MISE À JOUR DE DONNÉES DE REAL FOURNIR:
Le plan d'exécution: https://files.fm/u/b4besk27
c'est la requête:
SELECT
cielo.data_value AS cielo,
lluv.data_value AS lluvia,
temp.data_value AS temp,
vientos.data_value AS viento,
tmin.data_value AS tempmin,
tmax.data_value AS tempmax,
cielo.data_date AS DiaPrev
FROM
data_cielo AS cielo
INNER JOIN data_lluvia AS lluv ON cielo.data_geo = lluv.data_geo
INNER JOIN data_presion AS pres ON cielo.data_geo = pres.data_geo
INNER JOIN data_temp AS temp ON cielo.data_geo = temp.data_geo
LEFT JOIN data_tempmax AS tmax ON cielo.data_geo = tmax.data_geo
LEFT JOIN data_tempmin AS tmin ON cielo.data_geo = tmin.data_geo
INNER JOIN data_viento AS vientos ON cielo.data_geo = vientos.data_geo
WHERE
cielo.data_date = lluv.data_date
AND pres.data_date = cielo.data_date
AND vientos.data_date = pres.data_date
AND temp.data_date = vientos.data_date
AND cielo.data_geo = 46 ORDER BY cielo.data_date;
and this is the result:
E+ 0.0461028 29.6937088 S2 19.408 36.39 2017-06-13 12:00:00.000
E+ 0.0461028 29.6937088 S2 21.422 36.39 2017-06-13 12:00:00.000
E+ 0.0461028 29.6937088 S2 19.408 37.853 2017-06-13 12:00:00.000
E+ 0.0461028 29.6937088 S2 21.422 37.853 2017-06-13 12:00:00.000
E+ 0.0461028 30.7593854 S2 19.408 36.39 2017-06-13 13:00:00.000
E+ 0.0461028 30.7593854 S2 21.422 36.39 2017-06-13 13:00:00.000
E+ 0.0461028 30.7593854 S2 19.408 37.853 2017-06-13 13:00:00.000
E+ 0.0461028 30.7593854 S2 21.422 37.853 2017-06-13 13:00:00.000
A+ 0.0461028 31.6310774 SSW2 19.408 36.39 2017-06-13 14:00:00.000
A+ 0.0461028 31.6310774 SSW2 21.422 36.39 2017-06-13 14:00:00.000
A+ 0.0461028 31.6310774 SSW2 19.408 37.853 2017-06-13 14:00:00.000
A+ 0.0461028 31.6310774 SSW2 21.422 37.853 2017-06-13 14:00:00.000
A 0.0461028 32.2647927 S2 19.408 36.39 2017-06-13 15:00:00.000
A 0.0461028 32.2647927 S2 21.422 36.39 2017-06-13 15:00:00.000
A 0.0461028 32.2647927 S2 19.408 37.853 2017-06-13 15:00:00.000
il should't faire comme ça, j'ai besoin de resualt comme ce que je l'ai dit pour chaque valeur de données heure de Temprature, pression, Percipitation, Ciel, ......
IMO, Conception médiocre sans aucune normalisation. –
@PrabhatG c'est parce qu'il fait une insertion en vrac d'un fichier txt dans 8 table (8 variables métrologiques) je ne sais pas pourquoi ils le conçoivent comme ça mais c'est ce que c'est une suggestion? –
Essayez de créer un index sur ID_Geo. Cela réduira le temps d'exécution de la requête. – Debabrata