SQL数据库如何优化?

网友解答: 面试的时候经常会文档一些SQL方面的问题,比较常见的面试题例如“什么时候回造成索引失效?”,又或者“你经常做的SQL优化的工作有哪些?”下面,我就介绍几个有关SQL优化的知识

网友解答:

面试的时候经常会文档一些SQL方面的问题,比较常见的面试题例如“什么时候回造成索引失效?”,又或者“你经常做的SQL优化的工作有哪些?”

下面,我就介绍几个有关SQL优化的知识点。

负向条件查询不能使用索引:包括!=、not in、not exists都尽量不要使用;

%在前面的模糊查询:where name like '%xxx';

等号左边有函数:where upper(str) = '...',就算str字段有索引,这个写法也不会走索引;

数据区分度不大的字段,不要建索引:例如性别男、女、为止,这种就不适合建立索引;

隐式转换:where tel = 13800000000,如果tel字段是varchar类型,这个写法不会报错,但是会索引失效;

只返回需要的数据:select name,gender from users 优于 select * from users;

允许为Null的列,有风险:比如 where name != 'Tom',如果name允许为Null,索引不储存Null值,结果集不包含这些记录;因为索引不存储Null值,所以is null也不会走索引;

如果业务大部分是单条记录查询,那么Hash索引效率更高

复合索引最左前缀:(name,gender)复合索引,where name=xx and gender =x 可以命中,where name=xx可以命中,where gender =x不能命中。

标签: