数据库中Sql的优化方案

前言

  面试当中经常问到对于数据库的优化有哪些方案,或者想法之类的,问题有点大,一时想到好多,往往让人不知道如何回答。自己整理一些自己对于查询优化方面的思考,方便后续扩展和记忆。有不对的方面,希望大家指出,在此表示感谢!

sql查询优化

  对于查询大的可以分为单表查询和多表联合查询,各自需要考虑的因素略有不同。

  单表查询

       创建合适的索引,并让索引奏效

        注:

    ①索引失效的场景参考文章:

      https://blog.csdn.net/weixin_36586564/article/details/79641748

                    自己的总结:

            比如为B+树索引时,让查询从左到右(索引的有序性导致不会全表扫描)而不是从上到下(全表扫描

    ②MySQL目前主要有以下几种索引类型:
      1.普通索引
      2.唯一索引
      3.主键索引
      4.组合索引
      5.全文索引

  多表联合查询

  生成笛卡尔积的过程的优化

    ①生成笛卡尔积时快一点(关联列为索引,可以提高多张表对应列匹配的速度)

    ②生成的笛卡尔积小一点(关联之前各关联表中数据的过滤)

  生成笛卡尔积之后的优化

    ①索引的有效性,包括联合联合索引之类的

    ②中间表(对于实时性不高的数据可以通过定时任务、存储过程、监听器之类的生成中间表)

               ③如果事oracle数据库,可以并行执行某个语句

 

整个数据库的瓶颈是:io(物化视图),网络、cpu(Oracle中的并行)可以考虑在这方面优化

posted @ 2020-04-07 22:53  TomDu  阅读(226)  评论(0)    收藏  举报