zoukankan      html  css  js  c++  java
  • 【转】关于sql的书写

    先提提大原则

    1)优化更需要的优化 说明:执行对系统影响更大的QUERY,一般指的是高并发,执行更加频繁的SQL)

    2)定位优化对象性能瓶颈

    3)明确优化目标

    4)explain 写sql语句必须要使用explain

    5)profile

    6)小结果集驱动大结果集

    7)尽可能在索引中完成排序

    8)只取自己需要的字段

    9)仅仅使用最有效的过滤条件

    10)尽可能避免复杂的JOIN和子查询

    说说我们自己的小规定:

    一条sql语句能搞死一个数据库,继而搞死整站 !!

    1.索引以idx开始+组成索引字段命名,如 idxusertype (userid, type)

    2.innodb都需要有一个主键

    3.联合索引最前缀原则 select * from table where a=? and b=? and c=?

    4.相似性高的不要建联合索引如appkey 直接where gid=xx order by mgsid;

    5.别忘了order by createtime;加索引或联合索引,这种一般是后来产品要求的。

    6.别走count了,走计数器。

    7.严禁foreach sql

    8.越简单越好,多查几次都行。

    9.索引数不宜过多.5000千万数据,一个索引可能增加5个G存储空间。

    一个上亿表加个索引得加一下午甚至一天。

    10.复杂的表查询从产品层面解决

    11. 又排序又取计数。 双写。采取双写,读计数时走计数器,读排序时走order by 联合索引。

    12.一个页面一次请求sql语句复杂的不超过10个,简单的不超过5个。第二次再减半

    13.灵活运用索引。如order by createtime没有索引时用order by id代替

    14.in 语句不能过多,不能超过50个。

    15.杜绝用SQLCALCFOUNDROWS,left join,group by 等

    16.程序中杜绝order by 一个变量及变量中传值再组装 一个方法一个sql语句,不要千变万化,衍生出多个

    17.不要用函数

    19.取in的排序用php程序排,不要findin_set

    20.order by 走不上索引的走搜索.数据表结构不满足的走搜索或统计

    22.delete,update也要有索引

    23.limit值单独处理,作限制。不要 limit 1000万,5;

  • 相关阅读:
    k8s 存活探针(健康检查)
    数据库CPU 100%处理记录
    zabbix 批量安装+自动注册
    Docker 学习目录
    ubuntu18启动zabbix-agent失败/故障记录
    使用Docker构建企业Jenkins CI平台
    记一次服务被黑处理过程
    ELK数据迁移,ES快照备份迁移
    脚本监控服务状态 微信-钉钉告警
    邮箱附件脚本
  • 原文地址:https://www.cnblogs.com/gaoj87/p/3092497.html
Copyright © 2011-2022 走看看