zoukankan      html  css  js  c++  java
  • DF学Mysql(三)——索引操作

    概要:

    数据库对象索引其实与书的目录非常相似,主要是为了提高从表中检索数据的速度。

    由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个字段或多个字段生成的键组成,这些键存储在数据结构(B-树或哈希表)中。通过MYSQL可以快速有效地查找与键值相关联的字段。

    索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。

    根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。

    大多数存储引擎有更高的限制。MYSQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关;

    MYISAM和InnoDB存储引擎只支持BTREE索引;MEMORY和HEAP存储引擎可以支持HASH和BTREE索引

    索引的优点:

    1、通过创建唯一索引,保证数据库表每行数据的唯一性

    2、大大加快数据查询速度

    3、在使用分组和排序进行数据查询时,可以显著减少查询中分组和排序的时间

    索引的缺点:

    1、维护索引需要耗费数据库资源

    2、索引需要占用磁盘空间,索引文件可能比数据文件更快达到最大文件尺寸

    3、当对表的数据进行增删改的时候,因为要维护索引,速度会受到影响

    一般下面情况适合创建索引:

    1、经常被查询的字段,即在WHERE子句中出现的字段

    2、在分组的字段,即在GROUP BY子句中出现的字段

    3、存在依赖关系的子表和父表之间的联合查询,即主键或外键字段

    4、设置唯一完整性约束的字段

     一般下面情况不适合创建索引:

    1、在查询中很少被使用的字段

    2、拥有许多重复值的字段

    索引的分类

    1、普通索引和唯一索引

    主键索引是一种特殊的唯一索引,不允许有空值

    2、单列索引和复合索引

    单列索引只包含单个列

    复合索引指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用复合索引时遵循最左前缀集合

    3、全文索引

    全文索引类型为FULLTEXT,在定义索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值。全文索引可以在

    CHAR、VARCHAR、TEXT类型列上创建。MYSQL只有MYISAM存储引擎支持全文索引

    4、空间索引

    空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,

    分别是GEOMETRY、POINT、LINESTRING、POLYGON。

    MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须

    将其声明为NOT NULL,空间索引只能在存储引擎为MYISAM的表中创建

  • 相关阅读:
    [saiku] 系统登录成功后查询Cubes
    216. Combination Sum III
    215. Kth Largest Element in an Array
    214. Shortest Palindrome
    213. House Robber II
    212. Word Search II
    211. Add and Search Word
    210. Course Schedule II
    分硬币问题
    开始学习Python
  • 原文地址:https://www.cnblogs.com/sage-blog/p/3909643.html
Copyright © 2011-2022 走看看