索引对于优化数据库查询效率方面有着非常巨大的作用,下面是一个简单索引查询效率示例,希望能帮到一些朋友。

前提:范例表user_info,通过存储过程插入6万条数据。

表结构:

存储过程:

BEGINDECLARE i INT;SET i =1;WHILE i <= 60000 DOINSERT INTO user_info VALUES(i,CONCAT("赵钱",i),CONCAT("passw",i),26);SET i = i + 1;END WHILE;END

建立索引前

从上执行结果看出,根据name查询时,耗时0.046s;

然后根据id查询,执行结果如下:

从上可以很明显的看出,根据主键id查询时间短的多得多!

这是因为:创建主键的时候自动给主键添加了索引,且该索引为唯一性索引。

即主键一定是唯一性索引。

但是一张表中可以有多个唯一性索引,所以唯一性索引不一定是主键。

******************************************普通索引和唯一性索引的区别  START***************************************************************

在这里不得不讲一下普通索引和唯一性索引的区别:

1、普通索引
      普通索引的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHERE column = )或排序条件(ORDER BY column)中

的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。

2、唯一索引
  普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个“员工个人资料”数据表里可能出现两次或更多次。
如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。

**********************************************************普通索引和唯一性索引的区别   END**********************************************

下面开始创建索引(name):

CREATE INDEX ind_user_info_name ON user_info(name);

执行成功后根据name查询:

接下来是唯一索引!!用字段pass来示范:

添加索引前:

添加唯一索引:

CREATE UNIQUE INDEX uni_user_info_pass ON user_info(pass);

添加索引后再查询:

唯一性索引的另一个作用,控制该列不能有相同值!

查看表中所有的索引:

为了下面的演示,把刚创建的两个索引删除

DROP INDEX ind_user_info_name ON user_info;DROP INDEX uni_user_info_pass ON user_info;

创建一个唯一性复合索引

CREATE UNIQUE INDEX uni_user_info_pass ON user_info(name,pass);

然后执行插入操作:

在这里因为是复合型索引,只有当任意两条数据name-pass两字段的值都对应相同时,才起到唯一约束的作用!!!!

关于普通复合索引index这里就不再详细执行截图描述,只需要注意下面这形式的索引意义就OK了!!!!

当建立复合索引index(column1,column2,column3),这就相当于建立了以下三个索引:

index(column1),

index(column1,column2)

index(column1,column2,column3)  // 跟三个字段的顺序没有关系   比如:index(column3,column1,column2),它们是一样的效果

上面是创建索引,下面的语句提供查询索引(oracle中经过测试):

select * from user_indexes where table_name='表名';

select * from user_ind_columns  where index_name='索引名';

以上

仅供参考,文中有考虑不全的地方,欢迎大家提出宝贵意见!!!!

索引(index)_普通索引、唯一索引和复合索引.索引查询相关推荐

  1. mysql gis index 索引原理_从原理到优化,深入浅出数据库索引

    MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构. 数据库查询是数据库的最主要功能之一,我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的 ...

  2. mysql 索引 美团_美团面试官:说说MySQL的索引

    从本文开始,选取牛客网上大厂的面试题,整理出相关内容的知识点. 什么是索引 小学时我们经常用到的字典里有音节索引和部首目录,当我们查字典时,常常用音节索引和部首目录帮助我们提高查找汉字的速度.MySQ ...

  3. mysql男女字段应该建立索引吗_为什么说性别字段不适合做索引?

    关于区分度不高的字段,比如性别,比如状态字段,是否应该建索引? 只有2种取值的字段,建了索引数据库也不一定会用,只会白白增加索引维护的额外开销,因为索引也是需要存储的,所以插入和更新的写入操作,同时需 ...

  4. predicate 列存储索引扫描_在SQL SERVER中导致索引查找变成索引扫描的问题分析

    SQL Server 中什么情况会导致其执行计划从索引查找(Index Seek)变成索引扫描(Index Scan)呢? 下面从几个方面结合上下文具体场景做了下测试.总结.归纳. 1:隐式转换会导致 ...

  5. 查询mysql索引信息_数据查询优化之mysql索引

    为什么要建立索引: 索引用于快速找出在某个列中有一特定值的行.不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行,还需要考虑每次读入数据页的IO开销.而如果采取索引,则可以根据索 ...

  6. mysql general clomun_关于MySQL索引index杂谈

    MySQL建索引命令 create index index_name on tablename(clomun_name.....); 比如建了 CREATE INDEX  O_N_P_D  ON   ...

  7. 如何在vs中创建r树索引代码_线段树详解与实现

    此篇文章用于记录<玩转数据结构>课程的学习笔记 什么是线段树 线段树也被称为区间树,英文名为Segment Tree或者Interval tree,是一种高级的数据结构.这种数据结构更多出 ...

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

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

  9. mysql 唯一索引_面试官:谈谈你对mysql索引的认识?

    引言 大家好,我渣渣烟.我曾经写过一篇<面试官:讲讲mysql表设计要注意啥>,当时写完后,似乎效果还行! 于是呢,决定再来一个mysql的数据库专题,这篇我们就来谈谈关于索引方面的mys ...

最新文章

  1. Java开发中Websocket的技术选型参考
  2. 【图像分类】分类专栏正式上线啦!初入CV、AI你需要一份指南针!
  3. 1014-新浪微博(数据 cell )
  4. map的四种遍历方式
  5. 应考虑字节顺序(大小端问题)的几种情况
  6. 为什么有时不能正确定位到异常的发生位置?
  7. VS2010使用c++、gSOAP创建WebService 图文教程
  8. 软件系统部署手册模版
  9. 字节输入输出流,字符输入输出流
  10. 【JavaEE】TCP的五层协议栈之应用层与传输层的UDP协议
  11. HtmlUnit、Jsoup、webmagic基本介绍
  12. poj 1689 zoj 1422 3002 Rubbery (Geometry + BFS)
  13. linux下安装mysql数据库[yum install版]
  14. idea打jir放进项目里
  15. 通达OA 升级到2015精灵菜单异常的处理(图文)
  16. 计算机专业逻辑推理题,逻辑推理试题
  17. IEEE国际智能交通系统大会
  18. 全球千亿美元市值IT企业榜单
  19. jira系统(jira系统使用教程)
  20. pandas读取csv、txt和xlsx文件

热门文章

  1. com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
  2. html个人浮水入门day01
  3. 计算机进入桌面黑屏怎么办,电脑进入系统后黑屏,详细教您电脑进入系统后黑屏怎么办...
  4. 河道水位监测识别系统 yolov5网络
  5. Java中final关键字作用的简单分析
  6. 分类、推荐系统评测指标—准确率(Precision)、召回率(Recall)、F值(F-Measure) /(F-score)
  7. RFID化工厂人员定位考勤系统,你缺失的仅仅是定位技术吗-新导智能
  8. Dapp开发教程二 Asch Dapp Asset
  9. w25q32 内存分布
  10. teleport-ultra的使用