一.能说说什么是索引吗?索引的种类有哪些?
简单的理解,索引就是一种能够帮助数据库快速检索出数据的数据结构,索引即数据,它包含一个数据库表中某些列的值以及记录对应的地址,并且把这些值存储在一个数据结构中。最常见的就是使用哈希表或者b+树来作为索引。
二. 什么情况下适合建索引?
索引通常被用于那些筛选条件的列,如where和join中关联的列,像其他的一些筛选语法用到的列,初期可以先不用加,之后可以通过查询慢日志来优化sql,再配合上执行计划调整sql执行效率,这里要注意的是,索引不是越多越好,除非这个表只做查询不做新增修改删除等操作,一般一个表的索引数目建议保持在5~6个即可,同时要学会使用联合索引。
三.在创建索引时,一般会考虑那些因素?
一般是在测试环境数据库开启慢查询,像正式环境的不建议长时间开启,还是会影响性能的,慢查询设置一定的阈值后,如500ms,查询慢日志找出超出该阈值的sql语句,接着用explain命令查看这些sql语句的执行计划,根据执行计划结果,来反复做调整。
四.说说创建联合索引要注意什么?
首先要明白Mysql索引查询会遵循最左匹配原则,所以我们创建联合索引遵循这条规则即可,同时建议把筛选度高的字段放在联合索引的最左边,从左到右,字段的筛选率逐渐降低。
|