当前位置: 首页 > 科技观察

后端程序员必读,写SQL的13条好建议

时间:2023-03-17 19:08:21 科技观察

SQL是数据库的一种结构化查询语言。常用的关系型数据库有MySQL、SQLServer、Oracle、Access等,其实就是一种对数据库中存储的数据进行查询等操作的语言。如果你有语言学习的基础,那么学习SQL一定会轻松很多。每一个意见和建议都是一种幸运。推荐收藏~1。在执行delete或update语句时,尽量加上limit。它是SQL后悔药。加limit主要有这些好处:减少写错SQL的代价,如果不加limit,执行过程中如果不小心手抖了或者死机了,很可能所有的数据都会被删除。如果你犯了错误,你该怎么办?加个200的限制,一切就不一样了,可以通过binlog日志快速恢复。SQL效率可能更高。您将limit1添加到SQL行。如果第一行命中目标返回,如果没有限制,则继续扫描表。为了避免长事务,在执行delete时,如果age被索引,MySQL会在所有相关行上加上写锁和间隙锁,所有执行相关的行都会被加锁。如果删除数量较大,则无法直接使用相关服务。当删除大量数据时,加上limit限制记录数,这样就不容易占满CPU。2.改SQL操作,先在测试环境测试,避免语法错误再投入生产。改变SQL操作,需要写详细的操作步骤,尤其是有依赖关系的时候,比如:先修改表结构,再添加相应的数据。有替换Sql操作的回滚计划,在上线前,review对应的SQL变化。3、对于where之后的字段,注意其数据类型的隐式转换,可以优化性能。因为没有单引号的时候,是字符串和数字的比较。如果类型不匹配,MySQL会进行隐式类型转换,将它们转换为浮点数再进行比较,最终会导致索引失败。4、操作生产数据时,修改或删除SQL,先写WHERE检查,确定后再添加删除或更新。5、减少不必要的字段返回可以节省资源,减少网络开销,使用覆盖索引,减少返回表,提高查询效率。例如,使用select而不是select*。6、数据库和表的字符集应该统一采用UTF8编码,这样可以避免乱码问题和不同字符集的比较转换导致索引失效。如果要存储表情,选择utf8mb4存储,注意和utf-8的区别。7.尽量使用varchar而不是char。由于变长字段的存储空间小,可以节省存储空间。8.谨慎使用distinct关键字。一般用于过滤重复记录,返回不重复的记录。当可以在查询一个字段或者几个字段的时候使用,可以带来优化的效果。但是如果在字段较多的时候使用,会降低查询效率。9、使用SQL命令行修改数据,养成begin+commit事务的习惯。这也是一剂SQL后悔药。10、索引命名要规范。主键索引的名称为pk_字段名;唯一索引名称是uk_字段名称;常用索引名是idx_字段名。例如pk_是主键;uk_是唯一键;idx_是索引的缩写。11、where子句中,没有对列进行函数转换和表达式计算,因为在索引列上使用了mysql的内置函数,导致索引失效。12、SQL语句中,不包含在IN中的值不要太多。如果值太多,消耗会更大。MySQL对IN做了相应的优化,即将IN中的常量全部存储在一个数组中,数组是有序的。如果可以使用between就不要使用in,或者改用connection。13.适当时,使用覆盖索引。它可以让你的SQL语句不需要返回表,只需要访问索引就可以得到所有需要的数据,大大提高了查询效率。