zoukankan      html  css  js  c++  java
  • 数据库优化

    文章来源: https://www.cnblogs.com/easypass/archive/2010/12/08/1900127.html

    MySQL/Oracle数据库优化总结(非常全面):https://blog.csdn.net/baidu_37107022/article/details/77460464

    以上链接有对于数据库优化的详细内容,个人认为写的相当详细,但是由于本人并不能全都理解,以下是自己看完之后作的总结。

    1、 查询时的优化:

      在能够保证数据的完整性是尽量减少表之间的关联,去除外键!注意where查询条件后的顺序,先过滤有索引的,能尽量缩小数据范围

    2、 合理创建索引,索引优化:

      合理分析并设置,调整索引

     

      图中是一个字典按部首+笔划数的目录,相当于给字典建了一个按部首+笔划的组合索引。

      一个表中可以建多个索引,就如一本字典可以建多个目录一样(按拼音、笔划、部首等等)。

      一个索引也可以由多个字段组成,称为组合索引,如上图就是一个按部首+笔划的组合目录。

    3、只通过索引访问数据

      有些时候,我们只是访问表中的几个字段,并且字段内容较少,我们可以为这几个字段单独建立一个组合索引,这样就可以直接只通过访问索引就能得到数据,一般索引占用的磁盘空间比表小很多,所以这种方式可以大大减少磁盘IO开销。

      如:select id,name from company where type='2';

       如果这个SQL经常使用,我们可以在type,id,name上创建组合索引 

      create index my_comb_index on company(type,id,name);

      有了这个组合索引后,SQL就可以直接通过my_comb_index索引返回数据,不需要访问company表。

      还是拿字典举例:有一个需求,需要查询一本汉语字典中所有汉字的个数,如果我们的字典没有目录索引,那我们只能从字典内容里一个一个字计数,最后返回结果。如果我们有一个拼音目录,那就可以只访问拼音目录的汉字进行计数。如果一本字典有1000页,拼音目录有20页,那我们的数据访问成本相当于全表访问的50分之一。

    4、表结构优化:

      如果数据量过多的话,可以将表拆分开来,分类进行拆分,比如,男职员一张表,女职员一张表等等;

    5、用prepareStatement对sql语句进行预处理防止注入

    6、返回更少的数据

             (1)数据分页处理。数据库中rownum进行分页;应用服务器分页;

             (2)只返回需要的数据,查询语句不要用 * 代替需要的字段 

    7、减少数据交互

             (1)通过jdbc的batch进行提交。批量处理!比如一共提交1000次的数据,可以100条提交一次,这样只需要提交十次即可。减少了与数据库的交互。

             (2)当我们采用select从数据库查询数据时,数据默认并不是一条一条返回给客户端的,也不是一次全部返回客户端的,而是根据客户端fetch_size参数处理,每次只返回fetch_size条记录,当客户端游标遍历到尾部时再从服务端取数据,直到最后全部传送完成。所以如果我们要从服务端一次取大量数据时,可以加大fetch_size,这样可以减少结果数据传输的交互次数及服务器数据准备时间,提高性能。

    8、减少比较操作,模糊查询

             (1)减少比较操作,如>,<,!=等等;

             (2)减少模糊查询,如like,%等等; 

  • 相关阅读:
    P1829 [国家集训队]Crash的数字表格 / JZPTAB 莫比乌斯反演
    Luogu P1447 [NOI2010]能量采集 数论??欧拉
    Luogu P2522 [HAOI2011]Problem b 莫比乌斯反演
    Luogu P2257 YY的GCD 莫比乌斯反演
    [笔记] 数论函数小记
    [笔记] 线性筛小记
    Luogu P1092 虫食算 爆搜
    Luogu P1066 2^k进制数 组合数学
    Luogu P1641 [SCOI2010]生成字符串 组合数学
    Luogu P2532 [AHOI2012]树屋阶梯 卡特兰数
  • 原文地址:https://www.cnblogs.com/qcq0703/p/8651803.html
Copyright © 2011-2022 走看看