Abbiamo notato che le query eseguite con lo standard SQL
sono di solito un po 'più lente e molte volte di un fattore 5. La seguente query che ottiene il conteggio degli hit viene eseguita in 1.8s con legacy SQL
, ma richiede 10 secondi utilizzando lo standard SQL
. Le query sono:SQL standard costantemente più lento di Legacy SQL?
Legacy SQL:
SELECT
max_time,
COUNT(*) AS cnt
FROM (
SELECT
MAX(hits.time) WITHIN RECORD AS max_time,
FROM
[google_analytics.ga_sessions_20160601])
GROUP BY 1
ORDER BY 2 DESC
LIMIT 100;
SQL standard:
SELECT
(SELECT MAX(time) FROM sessions.hits) AS max_time,
COUNT(*) AS cnt
FROM
`google_analytics.ga_sessions_20160601` AS sessions
GROUP BY 1
ORDER BY 2 DESC
LIMIT 100;
notiamo che la quantità di "calcolare" nella prima fase è di solito un po 'più alto e c'è più attesa nella fase finale.
Anche altre query come un semplice SELECT COUNT(*)
presentano differenze simili.
È vero che lo standard SQL
è costantemente più lento del precedente SQL
?
Sto ancora osservando questo caso (gennaio 2017). – SheRey
Sto osservando (maggio 2017) lo stesso problema: std SQL è 2-3 volte più lento. L'esempio è 'SELECT substr (titolo, 1,1) t, count (1) cnt, sum (id), sum (num_characters) FROM [bigquery-public-data.samples.wikipedia] GROUP BY t ORDINA PER cnt desc' che richiede meno di 4,5 secondi in legacy e oltre 9 secondi in SQL standard. – tworec