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;

  • 相关阅读:
    什么是mybatis
    Oracle存储过程、游标、函数
    Oracle事务、视图、序列
    异步发送表单数据到JavaBean,并响应JSON文本返回
    结果的转发和重定向
    在业务控制方法中收集List<JavaBean>参数
    在业务控制方法中收集数组参数
    在业务控制方法中写入包装User的模型来收集参数
    在业务控制方法中写入User,Admin多个模型收集参数
    Linux内核分析:实验八--Linux进程调度与切换
  • 原文地址:https://www.cnblogs.com/gaoj87/p/3092497.html
Copyright © 2011-2022 走看看