php面试题for的优化方法,PHP经典面试题——数据库优化

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:51   1238   0

Mysql数据库优化

PHP学习过程当中或者面试过程当中少不了的一个重要知识点,那就是关于数据库的优化问题,本人通过查阅资料并验证,总结了几点比较浅层的数据库优化方法,小白能够参考,大神勿喷。面试

忘了何时发现的一张关于Mysql数据库优化的梯形图了,一直收藏着,感受颇有道理:sql

b2d3f4946e86c0d77361a19fe28c9e3d.png

从图中能够很明显的看出Mysql数据库优化的经常使用方法以及成本的高低。sql语句的优化和索引的优化是成本最小可是效果最好的方法,关于这两点我总结了以下几个优化方法:数据库

1.sql语句中不使用子查询,好比delete from user where uid not in( select id from order),由于使用子查询数据库要在内存中创建临时表,消耗资源,若是两个表有关联而且常常被一块调用,最好是在一张表中创建另外一张表的外键用join语句查询,好比:delete from user left join order on user.id=order.uid;负载均衡

2.sql语句中最好不要出现*来代替已知字段,即便是要查询全部字段也要写出每个字段,由于用*代替字段数据库要先查询出表中有哪些字段再进行sql语句的查询,无形中又多了一次无心义的查询工做;分布式

3.创建索引学习

3.1索引能够很是大程度加快数据库检索速度,尤为是在where和join中出现的列或者用Order by排序的时候速度更是快不少(须要判断或者比较或者排序的时候);优化

3.2索引大类分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇 索引就不同了;聚簇索引能提升多行检索的速度,而非聚簇索引对于单行的检索很快;网站

3.3可是创建索引并非越多越好,过多索引会形成冗余,由于每一次delete、update、add都会刷新一次索引,过多索引形成其余操做消耗过多资源,太小的表也不必创建索引,没人见过两页的宣传单页还有目录的对吧。ui

第二重要的就是表结构优化,关于这方面也有如下几点简单总结:编码

1. 选择最合适的字段属性,使用能够存在数据的最小的数据类型,例如邮政编码,手机号码这类定长的数字能够用char(6),char(11);性别或者是否这种判断性文字能够用tinyint;字段属性尽可能为not null这样不用判断是否为空,减小一个步骤(用其余方式表达你想表达的NULL,好比 -1);若是必定要用text这种类型,最好是采用分表存储;

2.将经常使用信息和不经常使用信息分表存储,好比一个商城网站的用户表,用户的昵称,头像,密码,帐号这类字段用户登陆就会用到,而用户的兴趣爱好了,喜欢的颜色了这种字段就分表存储,相信你们京东帐号中的我的信息可能也就在注册的时候打开过,之后就再没注意过了吧。

其它关于分库分表,负载均衡了集群和分布式了本小白还没接触过,须要的同窗查阅其它资料哈!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP