MySQL 必知必会系列(四)

如何对查询命令进行优化?

  1. 不要在where 子句中的“=” 左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引;
  2. 可以用exists 代替in;
  3. 尽量使用数字型字段;
  4. 尽可能使用varchar /nvarchar 代替char/vchar;
  5. 避免使用select * from x ,用具体的字段名代替 * ,如查询名称就用select name from x,不要返回使用不到的字段;
  6. 尽量使用表变量来代替临时表;
  7. 尽量避免向客户端返回大数据量的结果,若数据量过大,应考虑需求是否合理;

数据库的优化?

优化方式可参考官方文档分为三类:

  1. 数据库级别优化
  2. 硬件级别优化
  3. 平衡可移植性和性能
  • 优化索引、SQL语句、使用explain ,分析慢查询;
  • 设计表的时候严格根据数据库的设计范式设计数据库;
  • 使用缓存,区分冷热数据,能节约IO
  • 优化硬件,采用SSD,使用磁盘队列技术(RAID0,RAID1,RAID5)等
  • 垂直分表,把一些不经常读的数据放在一张表里,节约磁盘IO
  • 主从分离读写,采用主从复制把数据库的读操作和写入操作分离开来
  • 采用更快的存储方式,例如NoSQL 存储经常访问的数据
  • 不采用全文索引

SQL 注入是如何产生的,如何防止?

  • 程序开发过程中不注意规范书写 sql 语句和对特殊字符进行过滤,导致客户端可以通过全局变量 POST 和 GET
    提交一些 sql 语句正常执行,产生sql注入。
  • 防止方法如下:
    • 使用 PreparedStatement
    • 使用字符串过滤
    • 使用正则表达式过滤传入的参数
    • 在页面中限制,我们通过js设置,不让用户输入非法字符
    • 对常用方法进行封装,避免直接暴漏 SQL 语句

参考链接:

MySQL官网参考手册

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值