从数据库索引到数据库优化

数据库索引

  • 索引是什么?

    索引是一种数据结构,把关键码和它对应的记录相关联。一个索引包含若干个索引项,索引项中应该包含该关键字所对应记录的位置

  • 索引的结构

    • 树形索引

    • 多级索引

    • 线性索引

      • 稠密索引 :对于稠密索引来说,索引项是关键码有序的排列

      • 分块索引:将记录分成若干块,块内不要求有序,但是块间是有序(例如第二块最小值大于第一块最大值)。索引表是有序的,记录块的最大关键码和块长和记录对应的位置。

      • 倒排索引:索引表记录属性值和对应记录的位置或者对应主键的位置。

  • 索引的作用
    提高查询速度

  • 数据库中索引的存储类型和分类

    • 索引的存储类型:BTREE 和 Hash
    • 分类:
      • 唯一索引和普通索引:唯一索引 UNIQUE 字段中属性值只能出现一次(允许null值) ,主键是一种特殊的唯一索引不允许null值。普通索引允许空值和重复值

      • 单列索引和组合索引:单列索引,在一列中建立的索引。组合索引,在多个列建立的索引,查询的时候只有满足最左前缀才会使用索引。

      • 全文索引和空间索引:全文索引支持CHAT TEXT VARCHAR,在定义的索引列允许全文查找。空间索引,建立索引的时候要求表的存储引擎切换到MyISAM

  • 数据库中添加索引:

    • 创建表的时候添加
    • 修改表的结构添加索引:

数据库调优

  • 从哪些方面可以优化数据库?

    • 优化查询

      1. 分析查询语句,利用EXPLAIN关键字查看
      2. 设计合理的索引,使用索引查询。但是设计的索引在查询的时候可能会失效:使用LIKE进行模糊查询时,通配符%在第一个位置、使用多列索引的时候不满足最左前缀原则、使用OR关键字的时候,or连接的字段两边都必须是索引列才会使用索引。
      3. 优化子查询:使用子查询数据库会创建一个临时表,用多表连接查询代替。
    • 优化数据库结构

      1. 对于字段较多的表可以进行拆分

      2. 对于经常使用到的查询语句可以建立一个中间表或者在对应的表中添加冗余字段。

        优点:不需要多表连接查询,增加查询速度。

        缺点: 浪费空间,额外添加的表和字段需要和基准表中的数据保持一致。感觉不如直接使用视图

      • 优化插入记录的速度

        插入记录的时候,影响插入速度的主要是索引,唯一性检查,外键约束,一次插入数据的速度,数据库事务的提交

        MyISAM:

        1. 插入的时候关闭索引,插入完成开启索引
        2. 禁用唯一性检查
        3. 使用批量插入 :一条insert语句中插入多条记录,使用LOAD DATA INFILE

        InooDB:

        1. 禁用唯一性检查,插入完毕后开启
        2. 禁用外键检查,插入完毕后开启
        3. 禁止事务的自动提交
    • 分析表、检查表、优化表

      1. 分析表:ANALYZE TABLE 分析关键字的分布
      2. 优化表:OPTIMIZE TABLE 消除因为删除或者更新造成的空间浪费
      3. 检查表:CHECK TABLE 检查表中的错误
    • 优化数据库服务器(从服务器硬件和软件考虑)

      • 硬件的角度: 增大服务器的内存
      • 软件:服务器参数的优化,主要指堆,内存的初始化大小,允许的最大连接线程数。
  • 优化数据库服务器(从服务器硬件和软件考虑)

    • 硬件的角度: 增大服务器的内存
    • 软件:服务器参数的优化,主要指堆,内存的初始化大小,允许的最大连接线程数。

从数据库索引到数据库优化相关推荐

  1. access建立两个字段唯一索引_数据库索引原理及优化

    微信公众号:云计算通俗讲义 持续输出技术干货,欢迎关注! 通过本文你将了解: 概述 分类 索引底层实现原理 基本操作 索引失效 索引优化 01 概述 索引是帮助MySQL高效获取数据的排好序的数据结构 ...

  2. MySQL数据库——索引机制及其优化

    基础知识储备 局部性原理 发现程序和数据的访问都有聚集成群的倾向,在一段时间内,仅使用其中一小部 分(也称空间局部性),或者最近访问过得程序代码和数据,很快又被访问的可 能性很大(也称时间局部性). ...

  3. Mysql优化之三:数据库索引原理及优化

    转自:https://blog.csdn.net/suifeng3051/article/details/52669644 Mysql优化主要是索引的优化 1. 平衡多路搜索树B树(B-tree) 上 ...

  4. 数据库索引设计与优化

    1.什么是索引 在数据库中,索引的含义与日常意义上的"索引"一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象. A)索引可以避免全表扫描.多数查询 ...

  5. 数据库索引设计与优化(笔记):第5章 前瞻性索引设计(主要是QUBE,快速上限估算法)

    这一章就比较复杂了 基本问题法(BQ) 对每个SELECT语句,按照下列步骤来考虑 问题:是否有一个已存在的或者计划中的索引包含了WHERE子句所引用的所有列(一个半宽索引)? 如果答案是否,则首先考 ...

  6. android 数据库索引,SQLite数据库提供警告自动索引(列)升级Android L后

    我已经升级了我的Nexus 7与Android 5.0 Lollipop,之前,我的应用程序运行良好与SQLite数据库,但现在每当我执行任何类型的查询,它给我log cat错误,如: 12-09 1 ...

  7. sql 占比计算_数据库索引的优化及SQL处理过程(建议收藏)

    想要设计出好的索引,首先必须了解SQL语句在数据库服务器中的处理过程,本文介绍 数据库索引设计与优化 中几个对索引优化非常重要的概念. 谓词 谓词就是条件表达式. SQL语句的where子句由一个或者 ...

  8. 数据库索引数据结构总结——ART树就是前缀树

    数据库索引数据结构总结 from:https://zhewuzhou.github.io/2018/10/18/Database-Indexes/ 摘要 数据库索引是数据库中最重要的组成部分,而索引的 ...

  9. mysql 左连接 怎么走索引_数据库索引、左连接、右连接、等值连接

    在MySQL中,主要有四种类型的索引,分别为:B-Tree索引,Hash索引,Fulltext索引(MyISAM 表)和R-Tree索引,本文讲的是B-Tree索引. 一.Mysql索引主要有两种结构 ...

  10. 数据库索引是什么,有什么用,怎么用

    下面是关于数据库索引的相关知识: 简单来说,数据库索引就是数据库的数据结构!进一步说则是该数据结构中存储了一张表中某一列的所有值,也就是说索引是基于数据表中的某一列创建的.总而言之:一个索引是由表中某 ...

最新文章

  1. LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] c++
  2. WIN7建立网络映射磁盘
  3. 【知识小课堂】 之 聚合函数
  4. ORA-01555 原因与解决
  5. windows控制linux桌面图标,完全控制你的Windows桌面 (转)
  6. 计算机用户组连接打印机,在组策略中使用脚本为域用户添加网络打印机
  7. matlab mrst 工具箱 用共轭梯度法 找极值点
  8. Zabbix Server 3.0官方跟踪连接接口
  9. bnx2: Can't load firmware file bnx2/bnx2-mips-09-6.2.1b.fw
  10. dataman软件设置中文_S7200 SMART软件常见错误处理办法
  11. java+catch块不执行_Java异常处理机制:try...catch...的执行流程
  12. 15000php等于多少人民币,b站多少硬币才相当于1人民币?你一定想不到!
  13. pvs、pvdisplay、pvscan 查看物理卷信息
  14. 以考代评职称需要聘任嘛_这是您需要聘用的唯一简历客观建议
  15. 抖音超火的数字炸弹 c++ 实现
  16. Java8新特性三:常用的函数式接口(Supplier,Consumer,Predicate,Function)
  17. 华为应用市场业务介绍
  18. 用c语言模拟石头剪刀布小游戏
  19. c语言运行可以微信直接打开吗,如何用软件visual+c+++直接打开已将创建好的MFC工程文? 爱问知识人...
  20. 004-2018-09-06 列表

热门文章

  1. 可靠性试验与环境试验概述
  2. 我的Android进阶之旅------Android【设置】-【语言和输入法】-【语言】列表中找到相应语言所对应的列表项
  3. Git下载安装及设置详细教程
  4. cat6 万兆_超六类屏蔽网线CAT6AF/FTP10G万兆过测试工程网线益朗通信科技冀州
  5. SATI--文献题录开源程序
  6. 关于准系统,镭波,地球人等等其他牌子的机器介绍和外星人的比较
  7. idea设置jsp模板
  8. java大华监控_JAVA实现大华摄像头WEB方式实时显示视频,H5界面展示方式思路。
  9. QQ音乐MV/腾讯视频下载教程
  10. JspStudy环境下tomcat服务器无法正确运行servlet的一种解决方法