总结MySQL建表、查询优化的一些实用小技巧
MySQL建表阶段是非常重要的一个环节,表结构的好坏、优劣直接影响着后续的管理维护,赶在明天上班前分享总结个人MySQL建表、MySQL查询优化积累的一些实用小技巧。
技巧一、数据表冗余记录添加时间与更新时间
我们用到的很多数据表大多情况下都会有表记录的“添加时间(add_time)”,我建议大家再新增一个记录“更新时间(update_time)”字段,在我的工作里需要为市场部、运营部等建立各种报表,而很多报表里的数据都是需要到大记录表里去查询的,如果直接查询大表的话,查询速度相当慢。那么,我们的解决办法就是建立各种数据快照,数据快照都是通过脚本定时跑的。假如,哪一天原始数据表出现了问题,那么快照数据也会有问题,这个时候我们的快照脚本就得重新跑一份修复好了的数据,这样有了update_time更新时间这个字段,我们就能很快定位记录更新的时间。
技巧二、不要抛弃insert ignore into与replace into
大家肯定写过一些脚本循环将记录插入到数据表,例如使用PHP脚本。如果期间的一条SQL插入失败,那么后续的插入将终止,你可以在脚本里绕过这个插入错误,一个好的办法是使用ignore关键字来屏蔽插入错误。如果,你的数据表里已经存在有将要插入的相同记录,那么这个时候就会产生插入报错,使用 insert ignore into将绕开这个错误,继续下一条记录的插入。
如果你的表结构设计了唯一索引的话,那么使用replace into来更新你的数据表记录再好不过了,尤其是你在写一个脚本的时候,你就不需要在脚本里先查询数据表是否存在该条记录,如果存在,则更新;如果不存在则插入。你可以直接使用replace into,它会自动到数据表检测,如果在唯一索引字段存在该值,则会先删除该条记录,然后再插入新记录;如果唯一索引字段不存在该值,则直接插入数据表,简单且非常实用。
技巧三、给你的表建立唯一索引
很多情况下建立表唯一索引,能给我们省下很多麻烦事,想上面说的replace into就必须是有唯一索引,当然,很多人喜欢用到的自增主键ID尽管也是唯一索引,我建议是能在其他经常出现在where条件屁股后面的字段,并且值是唯一的话可以加个索引甚至唯一索引,查询速度将会提高很多。
说在最后:当然,insert ignore into与replace into大家要根据自己的需求来确定,不一定就适合你现在的需求;我只是提示大家还有这么些个实用的小知识大家可以灵活运用到项目里边。
您可能感兴趣的文章:
- MySQL查询优化之explain的深入解析
- mysql嵌套查询和联表查询优化方法
- MySQL查询优化:LIMIT 1避免全表扫描提高查询效率
- Mysql使用索引实现查询优化
- MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍
- mysql数据库查询优化 mysql效率
- MySQL查询优化:连接查询排序浅谈
- MySQL慢查询优化之慢查询日志分析的实例教程
- mysql limit查询优化分析
- php+mysql查询优化简单实例
- MySQL查询优化:用子查询代替非主键连接查询实例介绍
- 浅谈MySQL中的子查询优化技巧
- MySQL查询优化--调整内部变量的详解
- 美团网技术团队分享的MySQL索引及慢查询优化教程
- MySQL查询优化之索引的应用详解
- MySQL查询优化的5个实用技巧
- Mysql Limit 分页查询优化详解
- 30个mysql千万级大数据SQL查询优化技巧详解
- 总结MySQL建表、查询优化的一些实用小技巧
- 总结MySQL建表、查询优化实用小技巧
- 「mysql优化专题」单表查询优化的一些小总结,非索引设计(3)
- 「mysql优化专题」单表查询优化的一些小总结,非索引设计(3)
- MySQL 处理海量数据时的一些优化查询速度方法
- MySQL 处理海量数据时的一些优化查询速度方法
- MYSQL查询SQL的注意事项和一些技巧总结
- 数据库查询优化的一些总结
- 总结下MySQL存储引擎的区别和性能优化的一些方法
- mysql处理海量数据时的一些优化查询速度方法
- MySQL优化总结—查询总条数
- Mysql处理海量数据时的一些优化查询速度方法
- mysql处理海量数据时的一些优化查询速度方法
- Mysql处理海量数据时的一些优化查询速度方法
- mysql处理海量数据时的一些优化查询速度方法
- Kotlin开发的一些实用小技巧总结
- iOS一些实用小技巧总结
- mysql 优化 一些简单实用的原则
- Mysql优化,导致查询不走索引的原因总结
- mysql处理海量数据时的一些优化查询速度方法