-2
我有函數返回的員工數量整數MySQL的函數類型轉換錯誤
CREATE FUNCTION `getUser`(s CHAR(20)) RETURNS char(50) CHARSET latin1
RETURN @user;
當我執行它與(0.00秒)
但其執行該
select e.emp_number from hs_hr_employee e where
hie_code_1 in (select hie_code_1 from hs_hr_emp_level L,hs_hr_users U where L.emp_number=U.emp_number and L.emp_number=getUser2() and (U.def_level=1 or U.def_level=4) )
or
hie_code_3 in (select hie_code_3 from hs_hr_emp_level L,hs_hr_users U where L.emp_number=U.emp_number and L.emp_number=getUser2() and U.def_level=2 )
or
hie_code_4 in (select hie_code_4 from hs_hr_emp_level L,hs_hr_users U where L.emp_number=U.emp_number and L.emp_number=getUser2() and U.def_level=3)
獲得更多的慢回報;
但是當我硬編碼到
select e.emp_number from hs_hr_employee e where
hie_code_1 in (select hie_code_1 from hs_hr_emp_level L,hs_hr_users U where L.emp_number=U.emp_number and L.emp_number=5 and (U.def_level=1 or U.def_level=4) )
or
hie_code_3 in (select hie_code_3 from hs_hr_emp_level L,hs_hr_users U where L.emp_number=U.emp_number and L.emp_number=5 and U.def_level=2 )
or
hie_code_4 in (select hie_code_4 from hs_hr_emp_level L,hs_hr_users U where L.emp_number=U.emp_number and L.emp_number=5 and U.def_level=3)
這將返回與(0.00秒)的時間。 請給出優化功能的解決方案;
'getUser2()'做了什麼? – 2012-02-23 14:31:48
您在查詢中調用getuser2(),但顯示getUser的定義?它返回的@user var是什麼? – 2012-02-23 14:32:20
你有在emp_number和def_level列設置的索引嗎? – 2012-02-23 14:35:17