mysql - Subquery is faster? -
mysql - Subquery is faster? -
if need perform complex calculation based on row data, , alias it, in query might need operate on 10 of 10000 rows because of restrictive clauses, best utilize subquery in clause, instead of using single query?
an illustration easier:
select *,complex_calc(t1.c10) a1 t1 c2 > 5 , c3 < 10 , c6 = 4 , c7 > 50 having a1 > 100 limit 1000;
or
select *,complex_calc(ta1.c10) a1 (select * t1 c2 > 5 , c3 < 10 , c6 = 4 , c7 > 50 limit 1000) ta1 having a1 > 100;
which query faster? guess real question - mysql apply clauses before performing complex_calc on rows?
i guess real question - mysql apply clauses before performing complex_calc on rows?
yes
but if closely @ queries first 1 runs complex_calc
on rows satisfying clause , taking 1000 of them
on secon 1 takes 1000 rows, run complex_calc
on , take having a1 > 100
less 1000 rows
the botton line your queries not identical in output.
in case complex_calc
run twice: 1 time every row in having clause , sec time (upto 1000 times beacause of limit) in select
part.
i suggest:
select * (select *,complex_calc(t1.c10) a1 t1 c2 > 5 , c3 < 10 , c6 = 4 , c7 > 50) subtbl a1 > 100 limit 1000;
and phone call if need limit
here or in subquery
mysql
Comments
Post a Comment