SQL的性能建议

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:35   847   0

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 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP