阿里巴巴开发手册数据库方面的优化

简介: 其他    1.对于后台输出到前台的变量必须要加$!{var}    2.Math.random()这个方法的返回值是double类型,注意取值范围是0=<

其他
    1.对于后台输出到前台的变量必须要加$!{var}
    2.Math.random()这个方法的返回值是double类型,注意取值范围是0=< <1,注意除0异常,
    要想获得整型数,不要*10,只需要调用Random的nextInt(),nextLong()方法,
    3.不要在视图中加任何的逻辑,视图的任务就是展示,
    4.任何数据结构的构造或初始化都要指定其大小,避免数据无限增长吃光内存
    
数据库规约
    1.表达与否概念的字段必须用is_xxx,如删除与否is_deleted
    2.数据库名,表名,字段名都不允许出现大写,因为MySQL在linux默认下区分大小写
    3.decimal对于小数的存储用,禁止使用float和double,float和double存在精度损失的问题,很可能在值计算时得不到正确的结果
    如果数据范围超出了decimal的范围的话,建议就把整数和小数分开存
    4.如果存取的字符串长度确定了,那么就用char定字符串的长
    5.varchar是可变字符串,那么当其字符串超出5000就用text,独立出一张表避免影响其它字段的索引效率
    6.表的命名最好是业务名称_表的作用
    7.字段允许适当冗余,但是对于冗余的字段有要求:1.不是频繁修改,2.不是varchar超长字段
    8.合适的字符长度,可以提高检索速度。
    

SQL语句
    1.禁止使用count(常量)或者count(列名),因为它们避免不了NULL值
    用count(*)来计算条数
    2.count(distinct col)计算该列没有NULL值的不重复的数量
    3.注意count(col)当这一列全为NULL时,返回0,而sum(col)返回的值是NULL
    4.当代码中写查询分页时,count为0应直接返回,避免执行后边的代码
    5.对于数据的修改,删除操作时应该先select,避免出现错误
    6.在表查询时,应该禁止*,能用字段就用字段
    7.select * from user where id in
    <foreach collection="ids" item="item" open="("separator="," close=")">#{item}</foreach>
    sql.xml 配置参数使用:#{}, #param# 不要使用${} 此种方式容易出现 SQL 注入,
    select * from userorder by #{name} desc  /*有问题sql*/
    select * from userorder by ${name} desc
    8.iBATIS 自带的 queryForList(String statementName,int start,int size)不推 荐使用。 
    正例:Map<String, Object> map = new HashMap<String, Object>();
            map.put("start", start);    map.put("size", size);  
    9.不要写一个大而全的更新数据,更新哪些写哪些,因为容易出错,效率低
    10.@Transactional 事务不要滥用,
    11.Query对于查询对象的封装,超过两个以上的对象禁止用Map来传输

相关文章
|
3月前
|
关系型数据库 MySQL 数据库连接
Django数据库配置避坑指南:从初始化到生产环境的实战优化
本文介绍了Django数据库配置与初始化实战,涵盖MySQL等主流数据库的配置方法及常见问题处理。内容包括数据库连接设置、驱动安装、配置检查、数据表生成、初始数据导入导出,并提供真实项目部署场景的操作步骤与示例代码,适用于开发、测试及生产环境搭建。
135 1
|
9天前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
159 4
|
2月前
|
机器学习/深度学习 SQL 运维
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
99 4
|
6月前
|
SQL 关系型数据库 MySQL
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
|
7月前
|
关系型数据库 数据库 数据安全/隐私保护
云数据库实战:基于阿里云RDS的Python应用开发与优化
在互联网时代,数据驱动的应用已成为企业竞争力的核心。阿里云RDS为开发者提供稳定高效的数据库托管服务,支持多种数据库引擎,具备自动化管理、高可用性和弹性扩展等优势。本文通过Python应用案例,从零开始搭建基于阿里云RDS的数据库应用,详细演示连接、CRUD操作及性能优化与安全管理实践,帮助读者快速上手并提升应用性能。
|
8月前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
183 11
|
8月前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
1483 1
|
9月前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
229 11
|
10月前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句