SQL的性能建议

1 . 在SELECT 的时候如果知道访问的返回数据的数目的话,最好能指名限定的数量,

MySql:  SELECT * FROM table limit n

Oracle:  SELECT * FROM table rownum<n

因为在查询中,如果不指定顺序,SQL 会在匹配到你期望的数目时,继续搜索,如果指定了数量,则这时就结束搜索

2. DBMS 的SQL执行 

Oracle:有个"共享池"作为缓存,如果SQL语句已经在“共享池”里了的话,则不软解析,如果没有的话则硬解析

所以可通过绑定变量可以尽量让sql走软解析,不足之处在于可能会导致生成的执行计划不够优化,因此是否需要绑定,要根据情况而定。

SQL> select * from player where player_id = 10001; 未绑定变量
SQL> select * from player where player_id = :player_id; 绑定变量
 

Mysql:有类似的机制,但是mysql8.0取消了该机制

3. 设计表的基本原则

“三少一多”原则

三少:数据表的个数越少越好;数据表中的字段个数越少越好;数据表中联合主键的字段个数越少越好

一多:使用主键和外健越多越好

一多原则:试情况而定,如果在高并发和分布式系统的情况下,这个原则会增加系统维护复杂度,但是在项目初期还是建议按照这个原则。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值