您的位置:首页 > 数据库

SQL 优化案例

2016-01-25 17:10 429 查看
create or replace procedure SP_GET_NEWEST_CAPTCHA(
v_ACCOUNT_ID in VARCHAR2,   --接收短信的手机号
v_Tail_num in VARCHAR2,     --尾号
v_result out VARCHAR2,      --结果
v_CAPTCHA out varchar2      --验证码
) is
l_recvmsgid         NUMBER;
begin

if(((v_Tail_num is null) or (v_Tail_num = ' ')) and  ((v_ACCOUNT_ID is null) or (v_ACCOUNT_ID = ' '))) then
v_result:='11111';
return;
end if;
--取出验证码
select in_msg_id,in_captcha
into l_recvmsgid, v_CAPTCHA
from( select t.msg_id in_msg_id, CAPTCHA in_captcha
from jp_recvmsg_carcard t
where (t.tail_num = v_Tail_num or (((v_Tail_num is null) or (v_Tail_num = ' '))))
and  (t.account_id = v_ACCOUNT_ID) or (((v_ACCOUNT_ID is null) or (v_ACCOUNT_ID = ' ')))
and  t.msg_status = 0
order by t.msg_time desc)
where rownum = 1 ;

--更新状态
update jp_recvmsg_carcard t
set t.msg_status = 1
where t.msg_id = l_recvmsgid;
commit;
v_result:='0';
EXCEPTION WHEN OTHERS THEN
v_Result:='11111';
ROLLBACK;
end SP_GET_NEWEST_CAPTCHA;


优化后
优化案例2

SQL中的排序是很耗时的,根据测试按照时间排序比按照ID排序更耗时,所以如果可以,将按照时间排序改为按照ID排序;

如果必须按照时间排序,应该在时间列上加上索引!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: