zoukankan      html  css  js  c++  java
  • 说出一些数据库优化方面的经验?

    1. PreparedStatement 一般来说比 Statement 性能高
      1. 一个 sql 发给服务器去执行, 涉及步骤:语法检查、 语义分析, 编译, 缓存
        “inert into user values(1,1,1)”-二进制
        “inert into user values(2,2,2)”-二进制
        “inert into user values(?,?,?)”-二进制
    2. 有外键约束会影响插入和删除性能, 如果程序能够保证数据的完整性, 那在设计数据库时就
      去掉外键。( 比喻: 就好比免检产品, 就是为了提高效率, 充分相信产品的制造商)
      ( 对于 hibernate 来说, 就应该有一个变化: empleyee->Deptment 对象, 现在设计时就成了
      employeedeptid
      mysql 帮助文档子查询章节的最后部分, 例如, 根据扫描的原理, 下面的子查询语句要比
      第二条关联查询的效率高:
      1. select e.name,e.salary where e.managerid=(select id from employee where name='zxx');
      2. select e.name,e.salary,m.name,m.salary from employees e,employees m where
      e.managerid = m.id and m.name='zxx';
      表中允许适当冗余, 譬如, 主题帖的回复数量和最后回复时间等
      将姓名和密码单独从用户表中独立出来。 这可以是非常好的一对一的案例哟!
    3. sql 语句全部大写, 特别是列名和表名都大写。 特别是 sql 命令的缓存功能, 更加需要统一
      大小写, sql 语句发给 oracle 服务器语法检查和编译成为内部指令缓存和执行指令。
      根据缓存的特点, 不要拼凑条件, 而是用?PreparedStatment
    4. 还有索引对查询性能的改进也是值得关注的



    5. 备注: 下面是关于性能的讨论举例
      4 航班 3 个城市
      m*n
      select * from flight,city where flight.startcityid=city.cityid and city.name='beijing';
      m + n
      select * from flight where startcityid = (select cityid from city where cityname='beijing');
      select flight.id,'beijing',flight.flightTime from flight where startcityid = (select cityid from city
      where cityname='beijing')
  • 相关阅读:
    什么样的代码称得上是好代码?
    九年程序人生 总结分享
    Docker入门 第一课 --.Net Core 使用Docker全程记录
    阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅
    Visual studio 2015 Community 安装过程中遇到问题的终极解决
    Activiti6.0 spring5 工作流引擎 java SSM流程审批 项目框架
    java 进销存 库存管理 销售报表 商户管理 springmvc SSM crm 项目
    Leetcode名企之路
    24. 两两交换链表中的节点
    21. 合并两个有序链表
  • 原文地址:https://www.cnblogs.com/zhaideyou/p/5932230.html
Copyright © 2011-2022 走看看