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

普通索引、唯一索引和复合索引

大家好,又见面了,我是你们的朋友全栈君。


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


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


表结构:

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


存储过程:

BEGIN
  DECLARE i INT;
  SET i =1;
  WHILE i <= 60000 DO
      INSERT INTO user_info VALUES(i,CONCAT("赵钱",i),CONCAT("passw",i),26);
  SET i = i + 1;
  END WHILE;

END

建立索引前

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


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

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

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


从上可以很明显的看出,根据主键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查询:

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



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

添加索引前:

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


添加唯一索引:

CREATE UNIQUE INDEX uni_user_info_pass ON user_info(pass);


添加索引后再查询:

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


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

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


查看表中所有的索引:

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


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

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);


然后执行插入操作:

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


在这里因为是复合型索引,只有当任意两条数据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=’索引名’;



以上


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




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125343.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm激活码2021年(JetBrains全家桶)「建议收藏」

    (pycharm激活码2021年)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S3…

    2022年3月26日
    69
  • 分布式通信协议RPC协议简介

    分布式通信协议RPC协议简介定义RPC(RemoteProcedureCallProtocol)远程过程调用协议,使得我们客户端在不知道调用细节的情况下去调用远程计算机的某个程序中的某个函数时,就跟调用本地函数一样。RPC协议其实是一个规范,其实现框架有Dubbo、Thrift、RMI、WebService、Hessain等。RPC框架的特点是网络协议和网络IO对于调用端和服务端是透明的。RPC框架会封装隐藏底层的通信细节和网络IO细节。服务调用方与服务提供方的调用流程:一个RPC框架应该具有的要素:RPC客户端:

    2022年5月19日
    42
  • PHP一句话木马使用技巧

    PHP一句话木马使用技巧近来发现好多网站有安全狗,会拦截菜刀和蚁剑,因此总结下通过浏览器直接调用一句话木马的姿势。PHP一句话:<?php@eval($_POST[‘shy’]);?>firefox浏览器:hackbar命令提示符:curl首先上传一句话木马到网站目录,可以是虚拟机也可以是VPS,我这里用的是阿里云我自己搭建的网站,由于只是简单的一句话木马,因次一上车就收到了安全云的短信…

    2022年5月21日
    95
  • cutoff激活成功教程版下载_cutout

    cutoff激活成功教程版下载_cutout000000013F67F64|E831680500         |callcutout.13F6D5E80                  |000000013F67F64|4C8D0DCAF33C00   |lear9,qwordptrds:[13FA4EA20]        |;13FA4EA20:L”menuicon.png”

    2022年9月16日
    4
  • 柴油发电机发电机组_柴油发电机配置规范

    柴油发电机发电机组_柴油发电机配置规范应急柴油发电机主要用于重要场所,在紧急情况或事故停电后瞬间停电,通过应急发电机组迅速恢复 并延长一段供电时间。这类用电负荷称为一级负荷。对断电时间有严格要求的设备、仪表及计算机系统,除配备发电机外还应设电池或UPS供电。应急柴油发电机的工作有两个特点:(1)第一个特点是作应急用,连续工作的时间不长,一般只需要持续运行几小时(≤12H);(2)第二个特点是作备用,应急发电机组平时处于停机等待状态,只…

    2022年10月2日
    3
  • asp.net 跳转页面[通俗易懂]

    asp.net 跳转页面[通俗易懂]①response.redirect这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护。但速度慢是其最大缺陷!redirect跳转机制:首先是发送一个http请求到客户端,通知需要跳转到新页面,然后客户端在发送跳转请求到服务器端。需要注意的是跳转后内部空间保存的所有数据信息将会

    2022年7月20日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号