mysql---three 索引 事务 函数

索引是一个数据结构 b树作用就是提高查询效率

索引:对数据库表中一列或多列的值进行排序的一种结构,可快速访问数据库表中的特定信息。

2.优点和缺点:

优点:1.唯一性 数据库每一行数据都是唯一的 2.加快数据检索速度 3.减少磁盘Io

缺点:1.创建索引和维护索引需要耗费时间 2.索引占用额外的物理空间 3.当表中的数据进行增删改的时候,索引也需要动态维护

3.索引类型

普通:非唯一 最普通,无限制

唯一:键值不能重复,主键索引是一种特殊的唯一索引,键值不能为空,主要引用primay key 创建

全文:针对较大数据,解决like查询效率低的问题,只有文本类型的字段可以创建全文索引

聚合索引:由多个字段共同组成的索引

4.索引优化(九条记下来)

·尽量避免在字段开头模糊查询,会导致数据库引擎放弃索引进行全表查询---尽量在字段后面使用模糊查询

如果需求是要在前面使用模糊查询,使用MySQL内置函数INSTR(str,substr) 来匹配

·尽量避免使用in或not in,会导致引擎全表扫描--- 如果是连续的数值用between代替 in(2,3)-->between 2 and 3

·尽量避免使用or----使用union(且)代替or

·尽量避免进行null值的判断---给字段添加默认值为0,对0值进行判断

·尽量避免在where条件中等号左边进行表达式函数操作---where条件中等号右侧放表达式、函数操作(运行效率低)

·数据量大时,避免使用where 1=1---用代码拼装sql时进行判断,where变成and,没where就去掉

·查询条件不能用<>或者!=

·用复合联合索引的时候,注意遵循最左匹配原则---where条件仅包含复合索引非前置列

·隐式类型转化造成不使用索引

 

事务:如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败

四大特征:ACID

·原子性:最小操作单位,要么同时成功,要么同时失败

·持久性:当事务提交或回滚后,数据库会持久化的保存数据

·隔离性:多个事务之间相互独立

·一致性:事务操作前后,数据总量不变

分类:隐式事务和显示事务

隐式事务:没有明显的开始和结束标记,具有自动提交事务的功能

显示事务:有明显的开始结束标记(前提:自动提交事务的功能给禁用 set autocommit=0)

开启事务start transaction

结束事务commit

回滚事务rollback 不执行回到执行前的状态

 

函数

1.字符串

...三个点在java里面表示可以放相同数据类型的好几个数据

concat(s1,s2,...sn)字符串拼接,将 s1,s2 ,sn 拼接成一个字符串

lower(str) 将字符串 全部转为小写

upper(str)将字符串 全部转为大写

lpad(str,n,pad)左填充,用字符串pad对 的左边进行填充,达到 个字符串长度 

rpad(str,n,pad)右填充,用字符串pad对 的右边进行填充,达到 个字符串长度

trim(str)去掉字符串头部和尾部的空格

substring(str,start,len)返回从字符串 str从start位置起的len个长度

2.数值函数

ceil (x)向上取整

floor(x) 向下取整

mod(x,y)返回x/y的摸(取余)

rand()返回0~1内随机数

round(x,y) 求参数x的四舍五入的值,保留y位小数

3.日期函数

curdate()返回当前日期

curtime()返回当前时间

now()返回当前的日期和时间

year(date)获取指定date的年份

month(date)获取指定date的月份

day(date)获取指定date的日期

date_add(date,interval expr type)返回一个日期 时间值加上一个时间间隔

datediff(date1,date2)返回时间date1和date2之间的天数