5.5 设计索引
1)被频繁使用的字段设置索引
字段被频繁使用在where和order等条件里边,数据表创建完毕,要预估那些字段被经常使用,就给其创建索引
2)执行时间长的sql语句考虑设计索引
可以利用“慢查询日志”收集这样的sql语句并优化设计索引
3)逻辑非常重要的sql语句考虑设计索引
例如商城系统里边,会员给自己账户充值,订单购物,进行付款的时候
4)字段内存足够花样画,可以考虑设计索引
反面教材,性别不能设计索引
5.6 前缀索引
前缀索引:如果一个字段的内容的前边的n位信息已经足够可以标识当前的字段内容,就可以把字段的前n位获得出来并创建索引,通过字段内容前n位创建的索引就称为“前缀索引”;索引是给sql语句做优化,前缀索引是给索引做优化
5.6.1 获得前n位
获得字段的前n位:substring(字段,开始,长度) mysql函数
去重关键字:distinct
设置前缀索引:alter 表名 add key (字段(长度))
5.6.2 in条件的使用
5.7 了解索引结构
Mysql的数据结构都是B+Tree结构
5.7.1 Myisam索引结构称为“非聚合型”(具有单独的索引文件和数据文件)
索引运行原理:快速定位主键Id(索引文件),获得对应记录物理地址,获得记录信息(数据文件)
每个主键id值都是一个节点,节点本身有指针
最低层的节点称为“叶子节点”,该节点与记录的物理地址直接联系
Myisam其他索引机制与主键索引机制一致,通过索引文件找到对应物理地址,然后再数据文件找到对应记录信息
5.7.2 Innodb索引结构称为“聚合型”(“索引”和“数据”文件在同一个文件里面)
索引运行原理:通过索引结构快速定位id主键对应的“叶子节点”
该节点里面直接与整条记录信息进行对应(而在Myisam里面,叶子节点与物理地址对应),其他索引通过只记录主键id的索引地址,再通过主键id找到整条信息(普通索引关键字---》记录的主键id值---》记录的整条信息)
6. 缓存设置
有的被频繁执行的sql语句,比较消耗时间,消耗系统资源且每次获得数据还不太发生变化,那么就把这个sql语句会的信息缓存起来,供后续执行使用,这样非常节省系统资源
6.1 具体使用
查看缓存
设置缓存
6.2 缓存失效
数据表的数据发生变换或者数据表结构变化,则缓存失效
缓存对sql语句字母大小写敏感,空格等,同样结果的sql语句可能出现多个缓存,造成内存浪费
6.3 不使用缓存
6.4 查看缓存使用情况