说出一些数据库优化方面的经验?

  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')

转载于:https://www.cnblogs.com/zhaideyou/p/5932230.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值