SQL优化的解决方案

这篇文章中我以MySQL做示例
首先我跟介绍一下
SQL优化的解决方案
该type列 EXPLAIN输出介绍如何连接表。在JSON格式的输出中,这些作为access_type属性的值找到。以下列表描述了连接类型,从最佳类型到最差类型:
system > const > eq_ref > ref > range > index > all
system
该表只有一行(=系统表)。这是const联接类型的特例 。
const
该表最多具有一个匹配行,该行在查询开始时读取。因为只有一行,所以优化器的其余部分可以将这一行中列的值视为常量。 const表非常快,因为它们只能读取一次。
eq_ref
对于先前表中的每行组合,从此表中读取一行。除了 system和 const类型,这是最好的联接类型。当连接使用索引的所有部分并且索引为a PRIMARY KEY或UNIQUE NOT NULLindex时使用。
ref
对于先前表中的每个行组合,将从该表中读取具有匹配索引值的所有行。
range
使用索引选择行,仅检索给定范围内的行。
index
对索引数进行扫描

ALL
对来查询的表进行全表扫描。

1.sql优化我们记一件事就是尽量避免使用全表扫描
2.我们在查询时经常使用的where的字段一定要加索引
3.在查询是尽量不要使用 in 如果是连续值请用between
4.查询的时候不要在where后面加表达式
select num from table where num/2=10
可以用
select num from table where num=10*2
5.查询的时候不要用select *
select * from table
应该用到几个字段查几个字段
select num table
6.不要用where 1=1,字符串拼接的时候去判断
7.查询用到 like的时候,不要把%放前面,就是说用字符串的开头去匹配后面的字段
select * from table name like ‘%张’
可以
select * from table name like ‘张%’
8.不要频繁创建删除临时表,这样挺消耗系统资源的
9.数据量大的话建表时不要建索引,等所有数据入库后建索引
10.建表字段一定要合理,不用默认值为null,能用值类型就用值类型