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 (not ((v_Tail_num is null) or (v_Tail_num = ' '))) and (not ((v_ACCOUNT_ID is null) or (v_ACCOUNT_ID = ' '))) then
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
and t.account_id = v_ACCOUNT_ID
and t.msg_status = 0
order by t.msg_time desc)
where rownum = 1 ;
elsif (v_Tail_num is null) or (v_Tail_num = ' ') then
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.account_id = v_ACCOUNT_ID
and t.msg_status = 0
order by t.msg_time desc)
where rownum = 1 ;
elsif (v_ACCOUNT_ID is null) or (v_ACCOUNT_ID = ' ') then
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
and t.msg_status = 0
order by t.msg_time desc)
where rownum = 1 ;
end if; --更新状态
update jp_recvmsg_carcard t
set t.msg_status = 1
where t.msg_id = l_recvmsgid;
commit;
v_result:='';
EXCEPTION WHEN OTHERS THEN
v_Result:='';
ROLLBACK;
end SP_GET_NEWEST_CAPTCHA;

优化前

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:='';
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:='';
EXCEPTION WHEN OTHERS THEN
v_Result:='';
ROLLBACK;
end SP_GET_NEWEST_CAPTCHA;

优化后

优化案例2

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

如果必须按照时间排序,应该在时间列上加上索引!

SQL 优化案例 1的更多相关文章

  1. SQL优化案例—— RowNumber分页

    将业务语句翻译成SQL语句不仅是一门技术,还是一门艺术. 下面拿我们程序开发工程师最常用的ROW_NUMBER()分页作为一个典型案例来说明. 先来看看我们最常见的分页的样子: WITH CTE AS ...

  2. mysql的sql优化案例

    前言 mysql的sql优化器比较弱,选择执行计划貌似很随机. 案例 一.表结构说明mysql> show create table table_order\G***************** ...

  3. SQL 优化案例

    create or replace procedure SP_GET_NEWEST_CAPTCHA( v_ACCOUNT_ID in VARCHAR2, --接收短信的手机号 v_Tail_num i ...

  4. SQL夯实基础(四):子查询及sql优化案例

    首先我们先明确一下sql语句的执行顺序,如下有前至后执行: (1)from  (2) on   (3) join  (4) where  (5)group by  (6) avg,sum...  (7 ...

  5. 数栈SQL优化案例:隐式转换

    MySQL是当下最流行的关系型数据库之一,互联网高速发展的今天,MySQL数据库在电商.金融等诸多行业的生产系统中被广泛使用. 在实际的开发运维过程中,想必大家也常常会碰到慢SQL的困扰.一条性能不好 ...

  6. sqlserver sql优化案例及思路

    始sql: SELECT TOP 100 PERCENT ZZ.CREW_NAME AS 机组, ZZ.CREW_ID, AA.年度时间, CC.当月时间, DD.连续七天时间 AS 最近七天 FRO ...

  7. 百倍性能的PL/SQL优化案例(r11笔记第13天)

    我相信你是被百倍性能的字样吸引了,不过我所想侧重的是优化的思路,这个比优化技巧更重要,而结果嘛,其实我不希望说成是百倍提升,“”自黑“”一下. 有一个真实想法和大家讨论一下,就是一个SQL语句如果原本 ...

  8. SQL 优化案例之变更表结构

    从慢日志报表中看到一条很长的SQL select id from myinfo and (( SUBSTRING_INDEX(location_axis, ) ) ) ), '$%') ) or ( ...

  9. 一则SQL优化案例

    原始sql: select CASE ) counts ,) else deadline end as deadline from t_product_credit) c group by sort ...

随机推荐

  1. sublime text3编译运行C,Java程序的一些配置

    环境:linux 64位 桌面环境: gnome Java编译运行 (1)Preferences --> Browse Packages --> 在该文件夹下新建build文件如: Myj ...

  2. js--性能优化(转)

    前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够透彻异或是自己太笨,更多的是自己 ...

  3. Apache httpd.conf配置详解

    常用配置指令说明 1. ServerRoot:服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相对路径即基于此目录.默认为安装目录,不需更改. 语法:ServerRoot ...

  4. 两端对齐布局与text-align:justify

    百分比实现 首先最简单的是使用百分比实现,如下一个展示列表: <!DOCTYPE html> <html> <head> <meta charset=&quo ...

  5. hdu_5862_Counting Intersections(扫描线)

    题目链接:hdu_5862_Counting Intersections 题意: 给你与坐标轴平行的线段,问你交点数 题解: 实质就是扫描线,这里我用树状数组来记录,所有线段按X坐标排序,遇到横线段的 ...

  6. WebApi 跨域问题解决方案:CORS

    注:本文为个人学习摘录,原文地址:http://www.cnblogs.com/landeanfen/p/5177176.html 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看W ...

  7. Struts入门学习(一)

    刚开始学习框架的时候感觉很简单,都是用到javaEE的相关框架,自己就想研究源码,但是学了很久之后毫无头绪,所以还是扎扎实实学好Struts毕竟框架做起来要比自己写javaEE要简单,下面我们就来一步 ...

  8. ubuntu 操作系统相关操作

    查看操作系统位数 命令:  getconf LONG_BIT root@hbg:/# getconf LONG_BIT 64 查看操作系统信息 命令: lsb_release -a root@hbg: ...

  9. Windows系统新建gitignore文件出现“必须键入文件名”错误的解决办法

    今天打算把本地的项目用git推送到github上去,但是有的信息我又不想把它加入到版本控制系统中去,例如.classpath文件和.class文件等等,这个时候我就想到了使用.gitignore文件把 ...

  10. 重登陆模式 --ESFramework 4.0 快速上手(07)

    在ESFramework框架中基于TCP的服务端引擎(当然也包括Rapid引擎)都采用了这样一条规则:默认情况下,客户端与服务器成功建立TCP连接以后,服务端会从客户端发过来的第一条消息中取出消息头的 ...