数据库优化面试题
什么情况下设置了索引但无法使用,索引无效
1) 以”%”开头的LIKE语句,模糊匹配:红色标识位置的百分号会导致相关列的索引无法使用
2) Or语句前后没有同时使用索引
3) 数据类型出现隐式转化(如varchar不加单引号的话可能会自动转换为int型,会使索引无效,产生全表扫描。)
4)在索引列上使用IS NULL或IS NOT NULL操作。索引是不索引空值的,所以这样的操作不能使用索引,可以用其他的办法处理,例如:数字类型,判断大于0,字符串类型设置一个默认值,判断是否等于默认值即可
5)在索引字段上使用not,<>,!=,eg<>操作符(不等于):不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。用其它相同功能的操作运算代替,如a<>0改为a>0 or a<0
6)对索引字段进行计算操作
7)在索引字段上使用函数
4.如何设计一个高并发的系统
1) 数据库的优化,包括合理的事务隔离级别、SQL语句优化、索引优化
2) 使用缓存、尽量减少数据库IO
3) 分布式数据库、分布式缓存
4) 服务器的负载均衡