Mysql优化(三)

来源:互联网 发布:下周经济数据 编辑:程序博客网 时间:2024/06/05 12:49

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 查看缓存使用情况


原创粉丝点击