optimization - Same variable in parameter in mysql store procedure -
how cache dynamic query store procedure? right have created store procedure :
create procedure usp_myprocedure ( in userid int, .... ) begin set @sqlquery = concat("select name users userid > ", userid, " , userid in ( select userid othertable userid = ", userid, " ) order name") prepare stmt @sqlquery; execute stmt; deallocate prepare stmt; end; but kind of query not cached. so, every time gets more time execute/process query.
now have tried other method this:
create procedure usp_myprocedure ( in userid int, .... ) begin set @userid = userid; set @sqlquery = "select name users userid > ? , userid in ( select userid othertable userid = ? ) order name"; prepare stmt @sqlquery; execute stmt @userid, @userid; -- here passed same variable twice. deallocate prepare stmt; end; in above case have pass same variable (@userid) twice, because used 2 times in query. job hectic in long or complex query. so, how avoid this?
one method tried follows:
create procedure usp_myprocedure ( in userid int, .... ) begin set @userid = userid; set @sqlquery = "select name users userid > @userid , userid in ( select userid othertable userid = @userid ) order name"; prepare stmt @sqlquery; execute stmt; deallocate prepare stmt; end; but above query again not cached. so, execution time long. , type of variable declared session global variable has may conflict store procedure's variable. because have call store procedure within store procedure , variable name should same in store procedure.
so, let me know best solution same.
thanks.
sorry posted mistaken one,
delimiter // create procedure yourprocedurenamehere(in state char(2)) begin set @mystate = state; set @sql = concat('select * blablabla bla = ?'); prepare stmt @sql; execute stmt using @mystate; end; // sorry pal, edited code hahaha got wrong
Comments
Post a Comment