SQL-索引

作者: Manfestain | 来源:发表于2019-12-01 12:14 被阅读0次

当向表中插入一行数据时,数据库服务器不会试图将数据放到表中的特定位置。因此当查询时,服务器需要通过检查表中的每一行来完成查询。
当表中的数据过大时,服务器不能在合适的时间内完成查询,但是可以通过建立一个或多个索引来完成。

> ALTER TABLE department ADD INDEX dept_name_idx (name);
这个语句为department.name创建了索引,并将该索引命名为dept_name_idx。
> SHOW INDEX FROM department
查看表中的所有索引

当表被创建时,服务器会自动为主键列生成索引,生成索引名为PRIMARY。

> ALTER TABLE department DROP INDEX dept_name_idx;

索引可以有以下作用:

  • 提供常规索引
  • 作为一种机制限制索引列出现重复值。

索引类型

不同类型的数据需要不同的索引策略。

B树索引

B树索引以树结构组织,它又一个或多个分支节点,分支节点指向单级的叶节点,分支节点用于遍历树,叶节点则保存真正的值和位置信息。
当向表中插入、更新和删除数据时,服务器会尽力保持树的平衡。通过保持树的平衡,不需要遍历多层分支节点,服务器就能快速地到达叶节点查找到需要的值。

位图索引

虽然B树索引擅长于处理包含许多不同值的列(比如客户的姓氏/姓名),但是在处理允许少量不同值的列是会变得很难用。

总共有8类产品,有些产品会越来乐手欢迎,客户数目的增长会使得B树索引很难继续维持平衡。

对于那些包含少量值却占据了大量行的列,可以使用位图索引。有点类似于One-Hot编码。
位图索引通常用于数据仓库,需哟啊大量的数据被索引,但是每个列却只包含相对少的值。

文本索引

当数据库中存储文档,那么可能需要语序用户在文档中查找单词或者查找短语。但是又不希望每次请求搜素服务器都打开每个文档,然后扫描需要的文档。这时候就使用文本索引。


如何使用索引

服务器通常先使用索引快速定位特定表中的行,之后再访问相关表提取用户请求的补充信息。如果索引包含满足查询的所有内容,那么服务器就不必访问相关的表了。


索引的不足

每个索引事实上都是一个表(一种特殊的表),每次对表添加或者删除行时,表中的所有索引必须修改,当更新行时,收到影响的列的任何索引也必须被修改。因此索引越多,服务器级需要多越多的工作来保持所有模式对象最新。
仅当出现清晰需求时才添加索引,运行程序,删除索引,下次需要时再重复一遍。

相关文章

  • SQL-索引

    唯一索引、主键索引和聚集索引 A)索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页...

  • SQL-索引

    当向表中插入一行数据时,数据库服务器不会试图将数据放到表中的特定位置。因此当查询时,服务器需要通过检查表中的每一行...

  • 一、数据库之SQL语句

    一、SQL创表 二、SQL-插入 三、SQL-修改 四、SQL-删除 五、SQL-查询 以上是SQL语句常用的用法...

  • sql

    sql-基础sql-基础查询-1sql-基础查询-2sql-更新 概览 数据库(Database,DB):将大量数...

  • sql-将日期转换为YYYYMM格式 几种方式

    sql-将日期转换为YYYYMM格式SELECT CONVERT(nvarchar(6), GETDATE(), ...

  • oracle 常用查询语言

    SQL- Data Query Language 1. select 2. where 3. distinct 4...

  • Ubuntu下mysql的常用命令,MySQL数据库的基本操作命

    一、mysql服务操作 0.0 进入mysql $mysql -uroot -p 0、查看数据库版本 sql-> ...

  • mybatis动态SQL

    动态 SQL-参考链接有兴趣深究的可以去查看mybatis-3-mapper.dtd这个文件。http://myb...

  • SQL-本年

    select dateadd(qq, datediff(qq,0,getdate()), 0) select DA...

  • sql-留存

    --sumdate--返回结果的注册日期 --REGDATE--子表注册日期 --LOGINDATE--次日登陆日...

网友评论

    本文标题:SQL-索引

    本文链接:https://www.haomeiwen.com/subject/durywctx.html