志达IT
做快乐程序员

sql优化常用的几种方法(sql性能调优的方法)

sql优化常用的几种方法

1、查询SQL尽量不要运用select*,而是select具体字段
2、假如知道查询结果只有一条或者只要最大/最小一条记录,建议用limit1
3、应尽量防止在where子句中运用or来衔接条件
4、优化limit分页
5、优化你的like句子
6、运用where条件限定要查询的数据,防止返回剩余的行
7、尽量防止在索引列上运用MySQL的内置函数
8、应尽量防止在where子句中对字段进行表达式操作,这将导致体系抛弃运用索引而进行全表扫
9、Innerjoin、leftjoin、rightjoin,优先运用Innerjoin,假如是leftjoin,左边表结果尽量小
10、应尽量防止在where子句中运用!=或<>操作符,不然将引擎抛弃运用索引而进行全表扫描
11、运用联合索引时,留意索引列的顺序,一般遵循最左匹配原则
12、对查询进行优化,应考虑在where及orderby触及的列上建立索引,尽量防止全表扫描
13、假如刺进数据过多,考虑批量刺进
14、在适当的时候,运用覆盖索引
15、慎用distinct关键字sql性能调优
16、删除冗余和重复索引
17、假如数据量较大,优化你的修改/删除句子
18、where子句中考虑运用默认值替代null
19、不要有超过5个以上的表衔接
20、exist&in的合理运用
21、尽量用unionall替换union
22、索引不宜太多,一般5个以内
23、尽量运用数字型字段,若只含数值信息的字段尽量不要规划为字符型
24、索引不适合建在有大量重复数据的字段上,如性别这类型数据库字段
25、尽量防止向客户端返回过多数据量
26、当在SQL句子中衔接多个表时,请运用表的别号,并把别号前缀于每一列上,这样语义更加明晰
27、尽可能运用varchar/nvarchar替代char/nchar
28、为了提高groupby句子的效率,能够在履行到该句子前,把不需要的记录过滤掉
29、假如字段类型是字符串,where时必定用引号括起来,不然索引失效
30、运用explain分析你SQL的计划

sql性能调优的方法

SQL调优的几种方法:避免使用select*,用unionall代替union,用小表驱动大表,执行批处理操作,使用更多限制,值过多,增量查询,高效分页,使用链接查询而不是子查询,避免联接过多,联接时注意控制索引数量,选择合理的字段类型,提高分组效率,优化指标。
1.避免使用select*
选择*将查询所有字段,但在实际业务场景中,所有字段都不是必需的,可以不勾选。
2.将活接头全部更换为活接头
联合将消除重复,这需要遍历、排序和比较,这会消耗更多的CPU资源。在确定唯一性和无重复数据时,请尝试使用unionall。
3.小桌子带动大桌子
如果在中,则内部驱动器为外部驱动器,并且在中适用于查询内部子表
如果有现有设备,则适用于外部驱动器和内部驱动器。外驱适用于小型手表
4.批量插入
当然,一次的插入量不应该太大,可以分批插入。
5.使用限制
使用限制获取指定数量,而不获取所有记录。
6.中的值太多
找到的查询数量太大,限制了一次查询的最大数量
还可以执行多线程查询并最终汇总查询的数据。
7.增量查询
用户中选择姓名、年龄,其中id>#{lastId}limit100;
查询ID大于上次的100个项目
8.高效分页
从用户限制10000、20中选择id、name、age;
MySQL将查询10020个条目,并丢弃前10000个条目,这是对资源的浪费
可以优化:
从用户id>10000limit20中选择id、name、age;
查找最后一页的最大id
如果id是连续的且有序的,则可以使用between
注意:Between应该在一个唯一的索引上分页,否则每页的页面大小可能不一致。
9.用联接查询替换子查询
如果MySQL需要查询两个或多个表中的数据,通常有两种实现方法
子查询
联接查询
从user_Id所在的顺序中选择*(从name=’vie’所在的用户中选择Id);
子查询可以通过中实现,其优点是非常简单,
但缺点是MySQL在执行子查询时,需要创建临时表,然后在查询完成后删除临时表,这会带来一些额外的开销。
可以更改为连接查询:
在o.user_Id=u.Id上从内部加入用户u的顺序中选择o.*,其中u.name=’vie’;sql性能调优
10.联接表不应太多
联接表的数量不应超过3个。如果联接太多,MySQL在选择索引时会非常复杂,很容易选择错误的索引。
如果没有命中,嵌套循环联接将从两个表中的每个表中读取一行数据进行比较,时间复杂度为n^2。
11.加入时应注意
最常用的关节是左关节和内关节
左联接:两个表和左表的剩余数据的交集
内部联接:两个表的交集
内部联接MySQL会自动选择小表驱动程序,
左侧联接左侧的表驱动右侧的表
12.控制索引数量
指数越多越好。索引需要额外的存储空间,而B+树保存索引,这会导致额外的性能消耗。
请尝试将单表索引的数量限制为不超过5,并将单索引字段的数量限制在不超过5。
13.选择合理的字段类型
如果可以使用数字类型,则不需要字符串。字符串处理速度慢于数字类型
14.以效率提升团队
主要功能:重复数据消除和分组
先过滤数据,减少数据,然后分组
从用户中选择id、姓名、年龄
按id分组
id<50的;
这种书写方法不好,建议使用以下书写方法:
从用户中选择id、姓名、年龄
其中id<50
按id分组;
15.指标优化
强制遵循哪个索引
从用户中选择*
力指数

赞(0)
未经允许不得转载:志达IT网站 » sql优化常用的几种方法(sql性能调优的方法)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

志达IT网站 每天分享编程和互联网的IT技术博客

登录/注册联系我们