mysql数据库基础优化总结

1.从建库建表优化
1.1数据格式设计避免null值,数据库表格尽量设置默认值
1.2索引设置,索引能用数字尽量用数字,
实在不行可以选择数据前缀索引(选取字段的前**位建立索引,但要保证选择性在0.75以上:
选择性计算SELECT COUNT(DISTINCT column_name) / COUNT(*) FROM table_name;)
1.3选择性太低的字段不要建索引,能用联合索引就用联合索引(索引会占用很大的存储空间)
1.4主键索引的查询速度是最快的,因为其是聚簇索引(一级索引)
ps:聚簇索引的数据是存在二叉树的叶子节点的,一般索引的二叉树的叶子节点存的是数据存放的磁盘地址
2.sql语句优化
2.0表连接时小表在前,大表在后
2.1对于索引列使用like的话必须使用“11%” 使用“%11”或者“%11%”是不走索引的
2.2不要在索引的列上使用函数或计算   id+1=4  mouth(date)=12   这样是不走索引的
2.3查询时,采用is null条件时,不能利用到索引,只能全表扫描。
(单列索引无法储null值,复合索引无法储全为null的值,可以把null值改为特定值,或者采用联合索引建立索引)
2.4(联合索引)如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
2.5如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
2.6如果条件中有and,sql语句中的列值顺序要与联合索引的顺序一致,且不能使用范围查找,使用范围查找,后面列值将不能使用索引(最左前缀原则)
ps:联合索引使用注意查看最左前缀原则
3.mysql提供两种索引B-Tree索引,Hash索引
B树索引具有范围查找和前缀查找的能力,相当于二分查找。
哈希索引只能做等值查询
显然,如果值的差异性大,并且以等值查找为主,Hash索引是更高效的选择
如果值的差异性相对较差,并且以范围查找为主,B树是更好的选择,它支持范围查找。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值