Msql
1.索引优化
b+树
h=㏒(m+1)N
1.索引字段尽量小,h:b+树的高度;m 每个磁盘的数据项数量;N:当前数据表的数据。磁盘块大小是固定,索引字段越小,磁盘块存数据项的数量越多,m越大,h就会越小。b+树的的IO次数取决于h(树的高度),h越小IO次数越小,数据加载到内存的次数也越少(数据是加载到内存中查找的),那么查询效率也越高。
2.索引最左匹配特性(从左往右匹配):比较因子放在左边的会优先筛选,再往右依次比较。所以在左边的比较因子需要有比较强的特征性。
1 | 索引分类 |
索引两大类型
1.hash类型索引:查询单条快,范围查询慢。
2.btree类型的索引:b+树,层数越多,数据量指数级增长(我们就用它,因为innodb默认支持它)
2.sql优化
1.设置合适的字段属性
2.尽量把字段设置为not null 。避免数据库比较null值
3.使用join代替子查询
4.避免函数索引
5.用in来替换or
6.like使用两个百分号无法使用索引。
7.适当使用limiit m,n
8.避免数据类型不一致 (查询int 不加引号,查询字符类型加引号)
9.分组统计可以i禁止排序(为了避免排序消耗加入 order by null)
10.避免随机取记录
1 | SELECT * FROM t1 WHERE 1=1 ORDER BY RAND() LIMIT 4; |
11.批量iinsert,尽量使用一条语句,不使用多条insert。
部分参考
原文链接:https://blog.csdn.net/weixin_42047611/article/details/81772149