SQL语句尽可能简单,因为一条SQL只能在一个CPU运算,在高并发的情况下,可能一条大SQL就把整个数据库堵死。而简单的SQL缓存命中率更高,减少锁表的时间(特别是MyISAM),用上多CPU

保持事务、DB连接足够短,即开即用、用完就关。与事务无关操作放到事务外面,减少锁资源的占用;在不破坏一致性前提下,使用多个短事务代替长事务(如:发帖时的图片上传等待)

尽可能少用存储过程,少用触发器,减用MySQL函数对结果进行处理(交由客户端程序负责)

尽量少用select *,只取需要数据列,为使用覆盖索引提供可能性,减少临时表生成,更安全

用in()代替or,因为or的效率是O(n),而in()的效率是O(Log n)。如:where a = 1 OR a = 100 与 where a IN (1, 100)

merge index往往很弱智,所以用union代替对多字段的or查询。如:select * from t where a = 1 OR b = 2 与 select * from t where a = 1 UNION select * from t where b = 2

尽量避免负向查找,如NOT、!=等

尽量避免%前缀模糊查询,由于使用的是B+ Tree,前缀模糊使用不了索引,导致全表扫描(后缀模糊速度相对快很多)

减少COUNT(*),使用COUNT(col),前者资源开销大,尽量少用。MyISAM不带WHERE COUNT()而INNODB带WHERE COUNT()。 计数的统计可以采用的方法:实时统计可以使用memcache,双向更新,凌晨跑基准;非实时统计尽量用单独统计表,定期重算

LIMIT高效分页:传统的方法是select * from t limit 10000, 10,推荐的方法是select * from t where id > 23423 limit 10。LIMIT的偏移量越大则越慢。还有一些高效的方法有:先取id来LIMIT偏移,减少整体的数据偏移;取到需要的id,与原表JOIN;程序取ID,然后用IN来填写。select * from t where id >= (select id from t limit 10000, 1) limit 10 , select * from t INNER JOIN (select id from t limit 10000, 10) USING (id) , select id from t limit 10000, 10; select * from t where id in (123, 456...)

若无需对结果进行去重,则用UNION ALL而非UNION(UNION有去重开销)

分解JOIN联接来保证高并发。高并发DB不建议进行两个表以上的JOIN

group by会默认自动升序排序,如果需要去掉排序,需要指定order by NULL

比较原则:数字对数字、字符对字符。如果数值列与字符类型作比较,同时转换成双精度;如果字符列与数值类型作比较,字符列整列转数值,且不会使用索引查询

load data导入数据比insert快约20倍(不需要刷新缓存)

尽量不使用insert...select(延迟、同步出错)

大批量更新凌晨操作,避开高峰

SQL的一些命令:explain, show profile, mysqlsla, mysqldumpslow, show slow log, show processlist, show QUERY_RESPONSE_TIME(Percona)

mysql 军规_在互联网大厂必须遵守的MySql开发军规相关推荐

  1. 互联网大厂必问之MySQL、Redis、Spring三大块,面试必备技术栈

    前言 怎么样是不是感觉面试很难,不管是实习生还是有想要跳槽的大佬们都可以准备"金九银十"找工作的高峰期,在任何Java面试当中MySQL.Redis.Spring方面的问题都是必不 ...

  2. 什么是互联网大厂_在互联网大厂做运营,你要提前准备什么?

    现在互联网行业可谓炙手可热,很多同学想进入互联网行业,都听说运营岗是非技术岗,便跃跃欲试.但是同学啊,你真的了解运营吗?你知道运营都包括啥吗?运营真的那么好做吗?提前都得准备点啥呢? 其实运营说白了, ...

  3. 0配置EF连接MySql数据库_第八节:EF Core连接MySql数据库

    一. 前提 1.安装EF Core连接MySQL的驱动,这里有两类: (1).Oracle官方出品:MySql.Data.EntityFrameworkCore (版本:8.0.17) (2).其他第 ...

  4. mac mysql使用_在Mac中安装和使用MySQL

    下载安装MySQL 在官网下载MySQL 进入官网后可以看到有多个版本可选: Oracle MySQL Cloud Service 基于企业版数据库的云服务 MySQL Enterprise Edit ...

  5. cmd如何刷新MySQL数据库_怎样在cmd中用命令操作MySQL数据库 需要技巧

    用命令来操作MySQL是工作必备的,今天我就来分享一下cmd命令操作MySQL数据库的方法,希望有帮助. 工具/材料 电脑 xampp 操作方法 01 首先,启动MySQL服务才行哦.这里我是用xam ...

  6. 网页服务器和mysql服务器_实现Web服务器之间使用同一个MYSQL和相同的网页配置文件的方法...

    实现Web服务器之间使用同一个MYSQL和相同的网页配置文件的方法 发布时间:2020-04-15 16:42:41 来源:亿速云 阅读:133 作者:三月 栏目:数据库 亿速云负载均衡(Cloud ...

  7. kubernetes中mysql乱码_在kubernetes中部署tomcat与mysql集群-Go语言中文社区

    在kubernetes中部署tomcat与mysql集群之前必须要有以下这些基础: 1. 已安装.配置kubernetes 2. 集群中有tomcat与mysql容器镜像 3. 有docker基础 具 ...

  8. 命令创建mysql数据库_怎么在命令行创建一个mysql数据库

    哆啦的时光机 第一步:登陆到MySQL服务器 首先,你需要使用root用户登陆进你的MySQL数据库,如下: $ mysql -u root -h -p 请注意:为了能登进远程的MySQL服务器,你需 ...

  9. jpa mysql存储过程_(原)springbootjpa调用服务器mysql数据库的存储过程方法-Go语言中文社区...

    一.springboot jpa项目文件配置 #---------------------------------------------------------- ################# ...

最新文章

  1. “WPF老矣,尚能饭否”—且说说WPF今生未来(上):担心
  2. leetcode算法题--验证二叉树的前序序列化
  3. 深度系统linux deepin如何按装,U盘快速安装深度操作系统Deepin详细过程 体验不一样的桌面系统...
  4. 字符串处理分割字符串
  5. UITableView知识梳理须知—(一)
  6. 大数据支撑健康医疗服务落地
  7. Vue中使用echarts图表插件
  8. R语言︱噪声数据处理、数据分组——分箱法(离散化、等级化)
  9. 随笔小杂记(六)——tqdm进度条显示出现多余行
  10. quartz spring配置实例代码demo下载
  11. 后端+数据库(pycharm+mysql):使用 “flask”制作的调查量表/问卷
  12. 浅谈敏捷思想-05.精益画布电梯演讲
  13. PHP基础PPT课件,《php基础》PPT课件.ppt
  14. 中国第一程序员求伯君,WPS之父,雷军也佩服的人
  15. 【转】基于gamebryo引擎开发过程中组件的应用和取舍 By 宋晓宇
  16. andriod studio git
  17. 服务器临时文件定时清理,定时/开机自动清理Win10临时文件夹的技巧
  18. 基于语音的疲劳度检测算法研究
  19. 判断一个单链表是否有环,若有,找出环的入口节点
  20. latex公式常见问题:居中与左对齐,多行公式左对齐,上下标

热门文章

  1. Python计算商品复购率
  2. 软件设计师考试 | 第五章 软件工程基础知识 | 系统设计
  3. 分享一批学习资料教程视频书籍
  4. 去除图片链接边框及其链接虚线
  5. 计算机安装Hp1005打印机,hp1005打印机驱动 (64)
  6. 糖友秦女士反映时刻注意自己的饮食太痛苦了
  7. 2016面试整理--来源牛客网
  8. c语言入门高级教学(下)
  9. 一个交期建议程序的坑 4gl SQL
  10. 每天学点统计学——频率和累计频数