加入收藏 | 设为首页 | 会员中心 | 我要投稿 柳州站长网 (https://www.0772zz.cn/)- 基础存储、数据迁移、云安全、数据计算、数据湖!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

MCU与MPU之间的界限

发布时间:2021-02-03 13:50:37 所属栏目:外闻 来源:互联网
导读:这样可以避免临时表跟排序的产生,最终查询行数 = C + (Y1+1) + (Y2+1) + (Y3+1) exist 和 in 对比: 1、in查询时首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛

这样可以避免临时表跟排序的产生,最终查询行数 = C + (Y1+1) + (Y2+1) + (Y3+1)

exist 和 in 对比:

1、in查询时首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。

2、子查询使用 exists,会先进行主查询,将查询到的每行数据循环带入子查询校验是否存在,过滤出整体的返回数据。

3、两表大小相当,in 和 exists 差别不大。内表大,用 exists 效率较高;内表小,用 in 效率较高。

4、查询用not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。not exists都比not in要快。

10、MySQL优化

SQL优化主要分4个方向:SQL语句跟索引、表结构、系统配置、硬件。

总优化思路就是最大化利用索引、尽可能避免全表扫描、减少无效数据的查询:

1、减少数据访问:设置合理的字段类型,启用压缩,通过索引访问等减少磁盘 IO。

2、返回更少的数据:只返回需要的字段和数据分页处理,减少磁盘 IO 及网络 IO。

3、减少交互次数:批量 DML 操作,函数存储等减少数据连接次数。

4、减少服务器 CPU 开销:尽量减少数据库排序操作以及全表查询,减少 CPU 内存占用 。

5、分表分区:使用表分区,可以增加并行操作,更大限度利用 CPU 资源。

SQL语句优化大致举例:

1、合理建立覆盖索引:可以有效减少回表。

2、union,or,in都能命中索引,建议使用in

3、负向条件(!=、<>、not in、not exists、not like 等) 索引不会使用索引,建议用in。

4、在列上进行运算或使用函数会使索引失效,从而进行全表扫描

5、小心隐式类型转换,原字符串用整型会触发CAST函数导致索引失效。原int用字符串则会走索引。

6、不建议使用%前缀模糊查询。

7、多表关联查询时,小表在前,大表在后。在 MySQL 中,执行 from 后的表关联查询是从左往右执行的(Oracle 相反),第一张表会涉及到全表扫描。

8、调整 Where 字句中的连接顺序,MySQL 采用从左往右,自上而下的顺序解析 where 子句。根据这个原理,应将过滤数据多的条件往前放,最快速度缩小结果集。

SQL调优大致思路:

1、先用慢查询日志定位具体需要优化的sql

2、使用 explain 执行计划查看索引使用情况

3、重点关注(一般情况下根据这4列就能找到索引问题):

  • key(查看有没有使用索引)
  • key_len(查看索引使用是否充分)
  • type(查看索引类型)
  • Extra(查看附加信息:排序、临时表、where条件为false等)

4、根据上1步找出的索引问题优化sql 5、再回到第2步

(编辑:柳州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读