数据库调优

1.SQL注入漏洞攻防: 比如在用户名输入:abc: 而在密码框输入: "1'or '1'='1 ",那么拼接出来的SQL语句如下; 对付sql注入有两种方法:过滤敏感字符(比如or,and,select,delete) 和使用参数化sql(比如存储过程): 2.sql调优: 二八原理:是一个普遍的真理,即是20%的的代码占用了80%的总资源消耗:sql也是一种代码,因此它也符合这个理: i:索引: 是数据库调优的最根本的优化方法: 由于索引需要占据一定的存储空间,而且索引也会降低数据插入,更新和删除的功能,所以应该只创建必要的索引,一般在检索时用的字段中创建索引: 索引会造成存储碎片的问题,若存在过多的存储碎片,要进行碎片整理了,最方便的手段是重建索引:重件索引是把先前的索引删除了,然后重新创建索引: 聚集索引相当于字典中的拼音,非聚集索引相当于偏旁的查找 优化手法(应用于具体的环境中): 1:创建必要的索引: 2:使用预编译查询: 利用参数化sql执行预编译,这样第一次执行的时候DBMS会这个SQL语句进行查询优化并且执行预编译,以后再执行这个 SQL语句的时候直接使用预编译的结果,这样可以大大提高执行的速度: 3:调整where字句中的连接顺序: dbms一般采用自下而上的顺序解析where子句,根据这个原理,表连接最好写在其他 where条件之前:那样可以过滤掉最大数量的记录: 4:select语句避免使用* 5.尽量将多条sql语句压缩一句sql语句中: 6,用where字句替换having语句: having对结果集进行过滤: 7:使用表的别名: 8:用exits替代in语句: 9:用表连接替换exits 10:避免在索引列上使用计算:(会造成全表扫描) 11,用uninon all替换 union: 12:避免隐式类型转换造成的全表扫描: 由于在大部分数据库中的隐式转换类型中数值类型的优先级: 比如在Fage 字段上创建索引: select fid,fage,fname from t_pertson where fage=10 相当于 select fid,fage,fname from t_pertson where To_INT(fage)=10 这样会造成全表扫描而不是索引查找了: 13:防止检索范围过宽: 如果DBMS优化器认为检索范围过宽,那么它将放弃索引查找而使用全表扫描,下面可能造成检索范围过宽的情况: i:使用isnot null或者不等于判段,可能会造成优化器假设匹配的记录数太多: ii:使用like的时候 ,"a%"将会使用索引,而"a%C"和"%c"则会使全表扫描,因此"a%C"和"%c" 不能被有效的评估匹配的数量:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值