一. 插入数据
主键顺序插入的效率大于乱序插入的效率
大批量插入数据
如果一次性需要插入大批量数据,使用insert语句插入性能较低,此时可以使用Mysql数据库提供的load指令进行插入。(将特定文件里面的内容加载到数据库中去)
二. 主键优化
2.1 数据的组织方式
2.2 页分裂
页可以为空,也可以填充一半,也可以填充100%。每个页包含2-N行数据(如果一行数据多了,会行溢出),根据主键排列。
主键顺序插入的话是一个一个的往后插,一页满了又换下一页。
当插入50这个时,要插入的位置满了,此时就会先开辟一个新的数据页,然后找到第一个数据页50%的位置,然后将后面的数据移动到新开辟的数据页中。
然后将50放到新的数据页后面。
最后再对链表指针进行设置。
2.3 页合并
13,14,15,16都被标记为删除了。
2.4 主键的设计原则
三. Order by 优化 ![](https://img-blog.csdnimg.cn/307cf30342cc473fbe1158ba6bd58a46.png)
这里进行先对age、phone升序排序。没有索引效率不高
Backward index scan :表示反向扫描索引。
创建索引的时候如果没有指定顺序,默认指定是升序。所以这里会出现filesort
所以为了解决这个问题可以创建一个索引
3.1 order by注意事项
四. group by 优化
没有索引的时候
创建了联合索引后,查询的...
不在根据profession分组,而是根据age分组。将不满足最左前缀法则。
划重点!!!覆盖索引:select的数据列只用从索引中就可以获得了,不必读取数据行。Using index:表明相应的select操作使用了覆盖索引,避免了访问表的数据行。
满足最左前缀法则。
五. limit 优化
六. count 优化
count(*)不用取值,所以效率高。
七. update优化
所以说后面的条件字段是必须要有索引的,否者就会从行锁升级为表锁。就会影响并发性能了。