mysql select审核

 

·       禁止使用 select * ,只获取必要字段

解读:

1 select * 会增加 cpu/io/ 内存 / 带宽的消耗

2 )指定字段能有效利用索引覆盖

3 )指定字段查询,在表结构变更时,能保证对应用程序无影响

 

·       insert 必须指定字段,禁止使用 insert into T values()

解读:指定字段插入,在表结构变更时,能保证对应用程序无影响

 

·       隐式类型转换会使索引失效,导致全表扫描

 

·       禁止在 where 条件列使用函数或者表达式

解读:导致不能命中索引,全表扫描

 

·       禁止负向查询以及 % 开头的模糊查询

解读:导致不能命中索引,全表扫描

  以5万数据为临界点。。。超过5万 就不使用like 必须修改

·       禁止大表 JOIN 和尽可能避免子查询

·       同一个字段上的 OR 必须改写问 IN IN 的值必须少于 50

·       应用程序必须捕获 SQL 异常

解读:方便定位线上问题,

查看执行计划可知子查询在相同条件下是会比表关联多一个步骤的

同时会产生一个临时表。。

关联查询的效率 比 子查询效率更好

·       5.6 之后的mysql关联表查询可以使用in 但是禁止使用exist

In 的执行方式已经在5.6及之后的版本优化过了

Exist 还是老的执行方式。禁止使用

 

说明 :本军规适用于 并发量大,数据量大 的典型 互联网业务 ,可直接带走参考,不谢。

 

 

    原文作者:yleizzz
    原文地址: http://blog.itpub.net/30127122/viewspace-2660975/
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞