zoukankan      html  css  js  c++  java
  • 数据库优化小技巧总结

    对于数据库优化:

    数据库优化的目标无非是避免磁盘I/O瓶颈、减少CPU利用率和减少资源竞争
    基于第三范式的数据库表设计具有很多优点:
    一是消除了冗余数据,节省了磁盘存储空间;
    二是有良好的数据完整性限制,即基于主外键的参照完整限制和基于主键的实体完整性限制,这使得数据容易维护,也容易移植和更新;
    三是数据的可逆性好,在做连接(Join)查询或者合并表时不遗漏、也不重复;
    四是因消除了冗余数据(冗余列),在查询(Select)时每个数据页存的数据行就多,这样就有效地减少了逻辑I/O,
    五是对大多数事务(Transaction)而言,运行性能好;
    六是物理设计(Physical Design)的机动性较大,能满足日益增长的用户需求。

    所有常用于查询中的Where子句的列
    和所有用于排序的列创建索引,可以避免整表扫描或访问,在不改变表的物理结构的情况下,
    直接访问特定的数据列,这样减少数据存取时间;
    利用索引可以优化
    或排除耗时的分类*作;把数据分散到不同的页面上,就分散了插入的数据;主键自动建立了唯一索引
    ,因此唯一索引也能确保数据的唯一性(即实体完整性);索引码越小,定位就越直接;新建的索引效能最好,
    因此定期更新索引非常必要。

    一个表只能有一个聚族索引,可有多个非聚族索引。
    使用聚族索引查询数据要比使用非聚族索引快。
    ① 聚族索引(Clustered Index):聚族索引的数据页按物理有序储存,占用空间小。
       选择策略是,被用于Where子句的列:包括范围查询、模糊查询或高度重复的列(连续磁盘扫描);
    被用于连接Join*作的列;
    被用于Order by和Group by子句的列。聚族索引不利于插入*作,另外没有必要用主键建聚族索引。
    ② 非聚族索引(Nonclustered Index):与聚族索引相比,占用空间大,而且效率低。
        选择策略是,被用于Where子句的列:
    包括范围查询、模糊查询(在没有聚族索引时)、主键或外键列、点(指针类)或小范围(返回的结果域小于整表数据的20%)查询;
    被用于连接Join*作的列、主键列(范围查询);被用于Order by和Group by子句的列;需要被覆盖的列。

    防范sql注入的方法无非有以下几种:

      1.使用类型安全的SQL参数
      2.使用参数化输入存储过程
      3.使用参数集合与动态SQL
      4.输入滤波
      5.过滤LIKE条款的特殊字符

  • 相关阅读:
    Python自动化运维之1、Python入门
    Github使用教程
    Windows 托盘区域显示图标
    VS 2013 打包程序教程
    UML类图简单介绍
    crontab定时任务
    软硬链接的区别和重点
    linux运维之NFS服务器配置
    怎么样让Win10可以ping通?
    VM虚拟机Linux克隆后网卡的相关操作!
  • 原文地址:https://www.cnblogs.com/zuimengaitianya/p/4986304.html
Copyright © 2011-2022 走看看