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排序;
如果必须按照时间排序,应该在时间列上加上索引!
相关文章推荐
- MYSQL的分区字段必须包含主键-介绍以及解决方法
- mysql 索引( mysql index )
- SQLServer 2012 已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: SSL Provider, error: 0 – 等待的操作过时
- C#里ADO.NET的SqlDataAdapter新增数据
- toad fo roracle数据库备份
- Redis实现分布式session功能的共享
- Oracle存储过程详解
- oracle 求两个时间点直接的分钟、小时数
- ORACLE中to_date 、to_char
- 使用mysql profiling功能剖析单条查询
- mysql解决自动断开8小时未曾用过的链接
- [MySQL]Software caused connection abort: recv failed 问题分析与解决
- PostgreSQL与MySQL优势比较
- PostgreSQL与MySQL优势比较
- [MySQL]Software caused connection abort: recv failed 问题分析与解决
- mysql解决自动断开8小时未曾用过的链接
- MAC 下配置MySQL
- Android使用contentprovide实现对其他应用数据库的读写
- oracle用户管理入门
- 怎么跳出MySQL的10个大坑