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

    1、为什么要写这个

    需求推动技术学习得动力。
    

    2、数据库优化方向

    1) SQL语句和索引
    2)数据表结构
    3)系统配置
    4)硬件
    从上往下,成本由低到高。
    

    3、根据索引优化

    在说索引之前,先说下数据库是如何查数据库的,在这里以Sql Server为例

    数据读取,分为:物理读取、逻辑读取、和预读取

    预读取:根据数据库生成的查询计划,判断从物理磁盘中读取多少数据

    物理读取:数据初始是存在磁盘中的,所以第一次读取数据,要将数据从磁盘中读到内存中。SQL Server 物理读取数据是按照页读取的,每页大概8KB

    逻辑读取:就是从内存中根据条件筛选数据

    如何理解索引:
    理解索引的方式:就像我们查字典一样,索引就相当于字典的目录,我们可以根据拼音查询,或者根据偏旁查询
    索引又分为:聚集索引 和 非聚集索引
    
    聚集索引:何为聚集索引,就是具有物理性质的索引。此索引和数据顺序一致,而存到数据库表中的数据顺序只会有一个,所以聚集索引也只能有
    一个。
    
    非聚集索引:逻辑上的索引。对任一一个字段进行排序后的索引,所以该索引可以有多个。
    
    使用索引的好处:就像查汉语字典一样 ,按照拼音查,或者偏旁查,会很快查到对应的字,所以就是查询效率就会快。
    使用索引的缺点:当字典有目录的时候,字典就会变厚,变重,同样,数据库中的索引,也会占有空间,同时对数据的增加、删除和修改,效率会下降。
    比如你要删除字典中的一个字,你既要删除这个字,又要更新目录,所以会影响,数据库增加、删除和更新的效率,有解决的办法,随后再说。
    
    什么字段上创建索引
    
    - 主键或者外键
    - 关联表的字段上创建索引
    - 被经常当作查询条件的字段
    - 被当索引的字段的长度应该尽量小
    
    什么时候用聚集索引或非聚集索引	
    
    场景 是否使用聚集索引 是否使用非聚集索引
    列经常被分组排序
    返回某范围内的数据
    频繁更新的列
    主键列
    外键列
    以上内容仅供参考。
    

    创建索引

    通过语句进行创建

    SQL Server 数据库下:
    聚集索引:Create	clustered index indexName on Table(columnName)
    非聚集索引:Create noclustered index indexName on Table(columnName)
    删除索引:drop index Table.indexName
    

    通过UI创建

    通过数据库引擎优化顾问协助创建索引

       SQL Server 打开引擎优化顾问,设置相关配置,然后可以生成优化建议,包括分区建议,和索引建议。
    
    以上内容主要是数据优化中,自己对索引作用,和创建的总结,下一篇,SQL优化。
  • 相关阅读:
    hdu 3068 Manacher算法
    用gitolite新建项目,clone后首次push,可能会出现: git: No refs in common and none specified; doing no
    Linux命令之nano
    linux下git使用记录1 git 提交
    Linux 删除文件夹和文件的命令
    UBUNTU 下GIT的安装
    mysql 常用命令
    mysql 数据类型
    SQL优化
    CSS入门教程——定位(positon)
  • 原文地址:https://www.cnblogs.com/xiaoqiyaozou/p/12656538.html
Copyright © 2011-2022 走看看