MySQL优化 - SQL优化

SQL语句优化常见技巧

其实SQL语句的优化核心就在避免全表扫描上面

  1. 对查询语句优化,避免全表扫描
  2. 首先应考虑在 whereorder by 涉及的列上建立索引
  3. 避免在 where 子句中对字段进行表达式函数操作(避免 where 进行 null、!=、>= 、<= 等运算导致的全表扫描)
  4. group by 后面增加 order by null 就可以防止 group by 的默认排序 (默认排序可能会降低速度)
  5. 使用 JOIN 连接代替子查询 (JOIN不会在内存创建临时表,子查询会)
  6. 避免对没有索引使用 or 导致索引失效而全表扫描(union可以代替就用union
  7. 慎用 innot in( 考虑是否可以 exists 代替 in
  8. 查询数据的范围限制(如果只要一条,语句结尾加上 limit 1
  9. 禁止使用 like %开头 方式的模糊查询 (考虑全文索引)
  10. 禁止使用 select * 方式查询数据 (要什么列就写什么列)
  11. 创建字段时给予默认值(避免查询的时候 where colum = null 的情况出现)

《SQL 连接的区别》
《联合查询 union和union all的区别》

表设计技巧

  1. 遵守三大范式
  2. 适当的根据项目设计特殊列(反范式)
  3. 字段、索引越少越好
  4. 字段过多时分隔成两个表
  5. 字段类型选择(合适的类型能够节省空间及避免设计不当导致coding时的问题)
  6. 合适的索引(索引建在小字段上,对于大的文本字段甚至超长字段,不建索引)
  7. 尽量避免字段值允许为NULL
  8. 尽量避免使用主外键
  9. 每张表一定要有 id
  10. 使用 PROCEDURE ANALYSE() 分析表(mysql会给出你相关建议)
  11. 正确的选择引擎 (MyISAM和InooDB)

MyISAM和InooDB的区别?

属性名称MyISAMInooDB
事务不支持支持
全文索引支持不支持
锁机制表锁行锁
主外键不支持支持

这几个点的区别比较明显,省略其他的…

数据库备份

手动方式
Windows下的话配置好环境变量,用命令备份(source命令恢复)
Linux下的话进入到执行目录和windows一样用命令操作

备份语法:mysqldump –u -账号 –密码 数据库 [表名1 表名2…] > 文件路径
恢复语法:source 文件路径

自动(定时任务)方式
自动方式其实说白了就是定时方式嘛,无论是Windows还是Linux都是一样的思路。先编写脚本 (.bat/.sh脚本) 然后通过其他方式定时执行。 windows的话找到任务计划程序创建任务即可,inux的话可以通过 crontab 来完成。网上有很多相关的,看一遍就懂。

tips:SQL优化这方面还是要去积累,久了就有经验了,技巧是很多的学不完的毕竟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值