【数据库】索引创建原则、索引失效以及sql优化

5 阅读2分钟

提问:索引创建的原则有哪些?

回答:
1.数据量大,且查询比较频繁的表
2.常作为查询条件,排序、分组的字段
3.字段内容区分度高
4.内容较长,使用前缀索引
5.尽量联合索引
6.要控制索引数量
7.如果索引列不能存储null值,请在创建表时使用not null约束他

提问:什么情况下索引会失效?

回答:
1.违反最左前缀法则
2.范围查询右边的列,不能使用索引
3.不要再索引列上做运算操作,索引将失效
4.字符串不加单引号,造成索引失效(类型转换)
5.以%开头的like模糊查询,索引失效

提问:谈谈你对sql的优化经验

回答:
·表的设计优化经验
1.比如设置合适的数值(tinyint,int,bigint),要根据实际情况选择
2.比如设置合适的字符串类型(char和varchar)char定长效率高,varchar可变长度,效率稍低
·sql语句优化
1.select语句务必指明字段(避免使用select *)
2.sql语句要避免造成索引失效的写法
3.尽量使用union all代替union,union会多一次过滤,效率低
4.避免在where子句中对字段进行表达式操作
5.join优化,能用inner join 就不用left join right join,如必须使用,一定要以小表驱动,内连接会对两表进行优化,优先把小表放到外边,把大表放到里面。left join或right join,不会调整顺序
·主从复制,读写分离
如果数据库的使用场景读的操作比较多,为了避免写的操作造成的性能影响,可以采用读写分离的架构。读写分离解决的是,数据库的写入,影响了查询效率
·索引优化,索引创建原则
·分库分表