-->

科技资讯

您的当前位置:首页 > 资讯 > MySQL

mysql必要操作(四)

2020-11-03 09:56:34  来源:admin 点击:550

二、SQL规约


【建议】 (1) 为了充分利用缓存,不允许使用自定义函数、存储函数、用户变量


解读:如果查询中包含任何用户自定义函数、存储函数、用户变量、临时表、Mysql库中的系统表,其查询结果都不会被缓存。比如函数NOW()或者CURRENT_DATE()会因为不同的查询时间,返回不同的查询结果。


【强制】(2)在查询中指定所需的列,而不是直接使用“ *”返回所有的列


解读:

  • 读取不需要的列会增加CPU、IO、NET消耗;

  • 不能有效的利用覆盖索引。


【强制】(3)不允许使用属性隐式转换


解读:假设我们在手机号列上添加了索引,然后执行下面的SQL会发生什么?explain SELECT user_name FROM parent WHERE phone=13812345678; 很明显就是索引不生效,会全表扫描。


【建议】(4)在WHERE条件的属性上使用函数或者表达式


解读:Mysql无法自动解析这种表达式,无法使用到索引。


【强制】(5)禁止使用外键与级联,一切外键概念必须在应用层解决


解读:外键与级联更新适用于单机低并发,不适合分布式、高并发集群;级联更新是强阻塞,存在数据库更新风暴的风险;外键影响数据库的插入速度。


【建议】(6)应尽量避免在WHERE子句中使用or作为连接条件


解读:根据情况可以选择使用UNION ALL来代替OR。


【强制】(7)不允许使用%开头的模糊查询


解读:根据索引的最左前缀原理,%开头的模糊查询无法使用索引,可以使用ES来做检索。


相关文章更多 >

© 2024版权所有 水水网

电话:171780793