敷衍的面试|记录问题仅供参考,不代表最终答案
作者:互联网
MySQL的存储过程
1、概念:预先编译好的sql语句集合
2、提高效率:简化代码的重用性,简化操作,减少了编译次数并且减少了和数据库服务器的链接次数。
3、存储过程的参数列表
参数模式 参数名 参数类型
参数模式:in:需要传入方传值
out:该参数可以作为返回值
inout:继需要参数值,也有返回值
4、BEGIN…END
(1)每条sql需要分号结尾
(2)存储过程结尾需要DELIMITER(DELIMITER$$)
5、调用
call 存储过程名(实参列表)
6、定义变量
DECLEAR 变量名 变量类型
1. 声明语句结束符:DELIMITER $$ 或 DELIMITERo
2. 存储过程开始和结束:`BEGIN...END`
3. 变量赋值:SET @p_in=1
4. 变量定义:DECLARE 1_INT int unsigned default 40000`
5. 创建存储过程、存储函数:
6. create procedure 存储过程名(参数)
例:
create procedure in_param(in p_in int ) #in 表示输入参数 p_in参数名 int 数据类型
例2:
create procedure out_param(out p_out varchar)`
8. 存储过程体:`create function 存储函数名(参数)`
9. 过程体格式
开始于begin结束end
可以多层嵌套
BEGIN
BEGIN
statements
END
END
MySQL调优:索引调优、sql语句调优
1、条件语句调优
(1)where之后的条件,尽量不使用函数
(2)like之后使用最左检索,例:like “ab%” 而非 like “%b%”
2、索引调优
(1)索引的添加要注意,不要添加在常做修改的字段上
(2)多使用符合索引
(3)使用explian先查看索引的type级别,进行级别的升高
3、复杂sql优化
尽量简化成子查询,避免复杂的混合查询
应用程序内存溢出问题解决
栈内存溢出:程序所要求的栈深度过大导致。
堆内存溢出: 分清 内存泄露还是 内存容量不足。泄露则看对象如何被 GC Root 引用。不足则通过 调大 -Xms,-Xmx参数。
持久带内存溢出:Class对象未被释放,Class对象占用信息过多,有过多的Class对象。 通过-XX:PermSeize和-XX:MaxPermSeize限制方法区大小
无法创建本地线程:总容量不变,堆内存,非堆内存设置过大,会导致能给线程的内存不足。
该问题来自该博客
MySQL内置的函数
count()计数
avg()平均数
max()最大
min()最小
sum()求和
单行函数:针对单行数据
length()单行数据长度
concat()拼接字段
reverse()字符串反转
trim()去掉空格
sumstr()截取字符串
strcmp()匹配字符,匹配返回0
now()当前时间
date_format(date,“yy年MM月dd日”) 日期格式转换
datediff() 返回两者的差值
if()判断
ifnull()判断是否为空
数据库排序、分组、分页、链表查询
排序order by
升序ASC
降序DESC
分组group by
链表
内连接:inner join … on
左外:left join …on
右外:right join … on
on 后的条件:不管是否成立都会有返回值
where 后的条件不成立则无返回值
limit 使用
limit 2,3;从2开始,查3条数据
标签:存储,END,敷衍,面试,调优,参数,内存,仅供参考,out 来源: https://blog.csdn.net/wenquan19960602/article/details/106729549