mysql的tyintext类型_sql优化和索引

1、选择数据类型遵循小而简单的原则

越小的数据类型通常会越快,占用更少磁盘、内存,处理时所需要的CPU周期也更少。

例如:使用整形存储ip地址,使用DATATIME存储时间。

2、如果一个列计划创建索引,最好设置为NOT NULL。

3、INT类型长度固定4个字节32位,对他指定宽度,只会影响显示的长度,实际占用还是4字节。

4、对于状态码,推荐使用TYININT(1),占用1个字节,可以节省很多空间。

explain是查看优化器如何决定执行查询的主要方法。可以帮助我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。

explain select SQL_NO_CACHE id,name from user where id=1

执行语句将会得到一系列这个sql语句执行信息。

3d7c1b8572974e1a5177491f3bb9a331.png

返回信息

其中我们需要关注的是type和rows。

type是这句sql语句执行类型,好坏程度依次是:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

一般来说,好的sql查询至少达到range级别,最好能达到ref。

rows是扫过的行数,这个值越贴近最终查询出的行数越好。

sql优化的具体形式,就是索引。

mysql5.5及以上版本默认使用InnoDB作为搜索引擎。相比较于MyISAM,InnoDB支持外键、行锁、事务。(注意,行锁是建立在命中索引的情况下)

索引由两种:聚集索引和非聚集索引。

聚集索引是以主键为查找key,在建表时默认创建的索引,在B+结构中,所有的叶子节点存储的是该id的记录全部数据,这里引入覆盖索引的概念:覆盖索引时sql查询时如果索引已经存储了这次sql想要查询的全部字段信息,则命中索引之后直接返回,查询速度很快。

非聚集索引,就是自定义索引,创建索引的字段不同会引起不同的效果。

1)最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。

2)=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值