对面坐着仁爱的面试官
冷酷的问:小伙砸表字段,Sql语句有啥子需要注意哒
创建表时表字段设计创建表时表字段设计
- 表字段避免 null 值出现,null 值很难查询优化且占用额外的索引空间,推荐默认数字 0 代替 null。
- 尽量使用 INT 而非 BIGINT,如果非负则加上 UNSIGNED(这样数值容量会扩大一倍),当然能使用 TINYINT、SMALLINT、MEDIUM_INT 更好。
- 使用枚举或整数代替字符串类型
- 尽量使用 TIMESTAMP 而非 DATETIME
- 单表不要有太多字段,建议在 20 以内
- 用整型来存 IP
Sql 语句编写规范
- 使用 limit 对查询结果的记录进行限定
- 避免 select * ,将需要查找的字段列出来
- 使用连接(join)来代替子查询
- 拆分大的 delete 或 insert 语句
- 可通过开启慢查询日志来找出较慢的 SQL
- 不做列运算:SELECT id WHERE age + 1 = 10,任何对列的操作都将导致表扫描,它包括数据库教程函数、计算表达式等等,查询时要尽可能将操作移至等号右边
- sql 语句尽可能简单:一条 sql 只能在一个 cpu 运算;大语句拆小语句,减少锁时间;一条大 sql 可以堵死整个库
- 不用函数和触发器,在应用程序实现
- 避免 % xxx 式查询
- 使用同类型进行比较,比如用 ‘123’ 和 ‘123’ 比,123 和 123 比
- 列表数据不要拿全表,要使用 LIMIT 来分页,. 每页数量也不要太大