mysql索引和sql优化

索引类型

FULLTEXT:全文索引,目前只有MyISAM引擎支持
HASH:单个和in查询效率高,类似kv,但是范围和排序组合效率低
BTREE:最常用的索引类型,即B+树

索引种类

普通索引:仅加速查询
唯一索引:加速查询 + 列值唯一(可以有null)
主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并
全文索引:对文本的内容进行分词,进行搜索
索引合并,使用多个单列索引组合搜索
覆盖索引,select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖

实践

  • like语句的条件尽量采用右边模糊匹配,如:select * from user where username like '王二%',依据左侧原则,这条语句可以走索引
  • 如果对name,age添加了索引,则查询的时候,不要用select *,用select name,age from,因为B+树的叶子节点包含数据,所以从索引上就能取到数据
  • 查看执行计划,看语句是否走了索引:explain + 查询SQL
    ......

猜你喜欢

转载自www.cnblogs.com/yinchh/p/12398762.html