30条书写高质量SQL的建议,太有用了!( 五 )

26、当在 SQL 语句中连接多个表时,请使用表的别名,并把别名前缀于每一列上,这样语义更加清晰
反例:
select* from A innerjoin B on A.deptId = B.deptId;正例:
selectmemeber.name,deptment.deptName from A member innerjoin B deptment on member.deptId = deptment.deptId;27、尽可能使用 varchar/nvarchar 代替 char/nchar
反例:
`deptName` char(100) DEFAULT NULL COMMENT '部门名称' 正例:
`deptName` varchar(100) DEFAULT NULL COMMENT '部门名称' 理由如下:
因为首先变长字段存储空间小,可以节省存储空间 。
其次对于查询来说,在一个相对较小的字段内搜索,效率更高 。
28、为了提高 group by 语句的效率,可以在执行到该语句前,把不需要的记录过滤掉
反例:
select job,avg(salary) from employeegroup by job having job ='president' or job = 'managent'正例:
select job,avg(salary) from employee where job ='president' or job = 'managent' group by job;29、如果字段类型是字符串,where 时一定用引号括起来,否则索引失效
反例:
select * from user where userid =123; 

30条书写高质量SQL的建议,太有用了!

文章插图
 
正例:
select * from user where userid ='123'; 
30条书写高质量SQL的建议,太有用了!

文章插图
 
理由:为什么第一条语句未加单引号就不走索引了呢?这是因为不加单引号时,是字符串跟数字的比较,它们类型不匹配,MySQL 会做隐式的类型转换,把它们转换为浮点数再做比较 。
30、使用 explain 分析你 SQL 的计划
日常开发写 SQL 的时候,尽量养成一个习惯吧 。用 explain 分析一下你写的 SQL,尤其是走不走索引这一块 。
explain select * from user where userid =10086 or age =18; 
30条书写高质量SQL的建议,太有用了!

文章插图
 
作者:捡田螺的小男孩
来源:捡田螺的小男孩




推荐阅读