数据库索引详解

  • Mysql和Oracle索引简介
    • 什么是索引
    • 建立索引的有缺点:
        • 优点:
      • 缺点:
    • 索引类型
      • 创建索引和删除索引
          • 普通索引
        • 唯一索引
        • 主键
        • 删除索引

Mysql和Oracle索引简介

本文主要解释了什么是索引,索引有什么作用以及为什么需要创建索引;并且介绍Mysql和Oracle的索引类型以及如何创建索引和删除索引;

什么是索引

索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。 在数据库关系图中,您可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。

建立索引的有缺点:

优点:
  1. 可以加快数据的检索速度;
  2. 创建唯一性索引,保证数据库表中每一行数据的唯一性;
  3. 加速表和表之间的连接;
  4. 在使用分组和排序子句进行数据检索时,可以显著减少查询中分组
缺点:
  1. 索引需要占用数据表以外的物理存储空间
  2. 创建索引和维护索引要花费一定的时间
  3. 当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。

索引类型

  1. 单列索引 单列索引包含:普通索引(normal) 唯一索引(unique) 主键索引(primary key)
    1.1 normal: MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。
    1.2 unique: 唯一索引:索引列中的值必须是唯一的,但是允许为空值
    1.3 primary key: 是一种特殊的唯一索引,不允许有空值。
  2. 组合索引
    在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合
  3. 全文索引
    全文索引,只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引
  4. 空间索引
     空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON。在创建空间索引时,使用SPATIAL关键字。要求,引擎为MyISAM,创建空间索引的列,必须将其声明为NOT NULL。

创建索引和删除索引

普通索引

ALTER TABLE 表名 ADD INDEX 索引名称 (列名)

唯一索引

ALTER TABLE 表名 ADD UNIQUE INDEX 索引名 (列名)

主键

ALTER TABLE 表名 ADD PRIMARY KEY (列名)

删除索引

主键是唯一的就这样就行了
ALTER TABLE [表名] DROP PRIMARY KEY;
注意:当主键带有自增约束的时候需要移除自增约束,然后才能删除主键
删除其他索引
ALTER TABLE [表名] DROP INDEX [索引名]

Mysql和Oracle索引简介相关推荐

  1. Oracle索引简介

    Oracle索引简介 索引(INDEX)是为了加快数据的查找而创建的数据库对象,特别是对大表,索引可以有效地提高查找速度,也可以保证数据的惟一性.索引是对数据库表中一列或多列的值进行排序的一种结构使用 ...

  2. MySQL 高级 —— 复合索引简介(多列索引)

    引言 复合索引是指包含多个数据列的索引,与之概念相对的是单列索引,仅包含一个数据列.在大多数情况下,建立多列索引的好处都要多于单列索引.另外,复合索引最多支持16个列,但请一定不要让复合索引包含太多的 ...

  3. MySQL高级篇——索引简介

  4. Oracle索引知识学习笔记

    目录 一.Oracle索引简介 1.1 索引分类 1.2 索引数据结构 1.3 索引特性 1.4 索引使用注意要点 1.5.索引的缺点 1.6.索引失效 二.索引分类介绍 2.1.位图索引 1.2.函 ...

  5. MySQL高级 —— 高性能索引

    引言 最近一直在抱着<高性能MySQL(第三版)>研究MySQL相关热点问题,诸如索引.查询优化等,这阶段的学习是前一段时间MySQL基础与官方的"阅读理解"的进一步延 ...

  6. oracle索引与mysql区别_MySQL和Oracle中的唯一性索引从差别(r12笔记第83天)

    今天在修复MySQL数据的时候,发现一个看起来"奇怪"的问题. 有一个表里存在一个唯一性索引,这个索引包含3个列,这个唯一性索引的意义就是通过这3个列能够定位到具体1行的数据,但是 ...

  7. MySQL的前缀索引及Oracle的类似实现

    MySQL有一个很有意思的索引类型,叫做前缀索引,它可以给某个文本字段的前面部分单独做索引,从而降低索引的大小. 其实,Oracle也有类似的实现,对于文本,它可以通过substr的函数索引,实现同样 ...

  8. oracle的优化适用于mysql吗_性能优化之数据库优化,适用于Sqlite、Mysql、Oracle、Sql server,详细介绍了索引和事务及部分针对Sqlite的优化...

    本文为性能优化的第一篇--数据库性能优化,原理适用于大部分数据库包括Sqlite.Mysql.Oracle.Sql server,详细介绍了索引(优缺点.分类.场景.规则)和事务,最后介绍了部分单独针 ...

  9. mysql,oracle数据库优化之索引

    mysql,oracle数据库优化之索引,分库分表,表分区,本地索引,全局索引 数据库引擎 数据库索引 索引类型 主键索引 唯一索引 普通索引 全文索引 位图索引(oracle数据库才有) 在哪些列上 ...

  10. mysql 唯一索引 性能_普通索引和唯一索引的区别、性能差异,以及其他索引简介...

    唯一索引和普通索引使用的结构都是B-tree,执行时间复杂度都是O(log n). 1.普通索引 普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度.因此,应该只为那些最 ...

最新文章

  1. 【青少年编程竞赛交流】03月份微信图文索引
  2. vue2.0移除或更改的一些东西
  3. xshell5登录不上,让更新,结果还是不行的解决方法
  4. jmeter mysql 执行计划_[PT_06] 性能测试-场景设计与实现(登录随机购买业务)
  5. Swift给每个开发者赢取500万的机会!不看一生后悔。
  6. uploadify组件文件上传那些事
  7. Linux 复制文件报 not a regular file
  8. python均线斜率_一根20日均线闯天下? ——量化回测“压箱底指标”
  9. 区块链(BTC)学习总结1
  10. 安卓虚拟机 选择分辨率
  11. Python 鸡兔同笼
  12. web学生网页设计作业源码 HTML5+CSS大作业——三八女人节主题设计(1页)
  13. 时间计算题100道_搞定一建经济中让你抓耳挠腮的计算题(1)
  14. 纯前端 导出excel 插件xlsx和file-saver
  15. 人工智能的应用带来便利,也引发数据滥用、隐私侵犯的担忧
  16. linux查看网卡驱动信息,linux 查看网卡驱动信息
  17. 你的Ubuntu还可以这么美(转自知乎 @知一)
  18. 台式计算机没有usb3.0,台式机USB3.0扩展卡怎么样 | 台式机USB3.0扩展卡开箱_什么值得买...
  19. 'GridSearchCV' object has no attribute 'best_params_'解决办法
  20. python安装skimage(no module named ‘skimage‘)

热门文章

  1. 第五章:软件详细设计
  2. 基于矩阵分解的协同过滤推荐算法
  3. 安川机器人焊枪切换设定方法_安川机器人工具、用户、安全模式设定方法
  4. 电容或电感的电压_电感电容等储能元件
  5. linux 摄像头yuv,camera YUV格式
  6. 微信小程序弹框之获取输入内容(2)
  7. 计算机教研论文范文,计算机教研论文提纲格式模板 计算机教研论文提纲怎样写...
  8. 计算机毕业设计-ssm超市进销存管理系统(项目+类似文档)超市仓库管理系统javaweb-超市库存预警管理系统源码
  9. springboot校园二手交易平台的设计与实现毕业设计源码260839
  10. arm架构与体系结构