当前位置:网站首页 > 数据科学与大数据 > 正文

mysql查看主键索引(mysql主键索引支持哪些数据类型)



        MySQL官方对索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构

        1、唯一索引

        指索引列的值必须唯一,但允许有空值(NULL可以出现多次)。

        2、单值索引

        3、复合索引

        即一个索引包含多个列。

        创建索引:

        删除索引:

        数组?:

        数组在查找方面效率很高,根据角标查询数据,时间复杂度为O(1),但如果发生了插入和删除,整个数组的角标都会变化,时间复杂度为O(n),效率很低。

        哈希表?:

        哈希表是由键值对组成的,其增删改查的时间复杂度都是O(1)。

        二叉树?:

        就增删改查操作来说,哈希比树的操作更快,但二叉树有排序操作。

        但是,普通二叉树是静态的,导致其并不稳定,各个节点添加后就无法修改优化,也就是说,可能会有下面的情况出现:

        平衡二叉树(AVL)?:

        相比于普通二叉树,平衡二叉树会通过自旋来实现动态变化,是自身的结构稳定了下来。

        到了平衡二叉树这里,各个操作的时间复杂度都已经相对稳定,且时间复杂度均为O(log(n))。

        B树?:

        二叉树中,每个节点仅能有一个数据,B树中可以有两个(三叉树)。


        相比于二叉树,少了一次IO操作,提高了查询效率。

        B+树(√):

        这是B树的检索原理:

        在B树中,每个磁盘块中键值和数据存储在一起。 

优势:① 提高数据检索的效率,降低数据库的IO成本。

劣势:① 索引提升了查询速度,但也降低了更新表的速度,如INSERT、UPDATE、DELETE。因为更新表时,不仅要保存数据,还要保存索引文件中每次更新添加了索引列的字段,调整因为更新所带来的键值变化后的索引信息。

        MySQL的查询处理,也就是使用EXPLAIN关键字模拟优化器执行SQL查询语句,从而得知MySQL是如何处理你的SQL语句的,由此来分析你的查询语句或是表结构的性能瓶颈。

        执行EXPLAIN所获得的信息:

        注:由于Mysql5.5/5.7/8.0底层做了不同优化,不同版本下性能表现不同。

        最简单的select查询,查询中不包含子查询或UNION

        查询中若包含复杂的子部分,则最外层被标记为PRIMARY,在select或where中的子部分为SUBQUERY

        从UNION表获取结果的select就是UNION RESULT

        

        还有DEPENDENT SUBQUERY和UNCACHEABLE SUBQUERY,但不常用。

        显示查询使用了何种类型,从好到差依次是:

        system > const > eq_ref > ref > range > index > ALL

        注:一般来说,需要保证查询至少要达到range级别,最好能达到ref

        表示可能应用在这张表中的索引,可能是一个或多个,只要查询涉及到的字段存在索引,该索引就会被列出,但不一定被实际使用。

        1、Using where

        2、Using filesort()

        说明MySQL会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取,MySQL中无法利用索引完成的排序称为“文件排序”。

        创建索引后:

        建立了的deptid和name的索引后,该排序就会使用索引,大幅提升效率。

        相比于上面的order by操作,group by操作要在where查询后对其进行分组操作再产生一张新表作为结果,也就是说,where查询的数据被形成了一张中间的临时表用于下面的操作,既然如此,就会发生Using temporary。

        

        如果没有出现using where,则表示索引是用来读取数据而非执行查找动作。

到此这篇mysql查看主键索引(mysql主键索引支持哪些数据类型)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • iotdb数据库指令(iot 数据库)2025-11-25 23:36:07
  • sqlldr导入数据文件的命令(sqlldr 导入)2025-11-25 23:36:07
  • spss22.0数据分析教程(spss21.0数据分析教程)2025-11-25 23:36:07
  • 自动驾驶数据集(自动驾驶数据集有哪些)2025-11-25 23:36:07
  • 广度优先搜索用什么数据结构(广度优先搜索序列怎么做)2025-11-25 23:36:07
  • impdp导入命令语句(impdp导入oracle数据库)2025-11-25 23:36:07
  • 中文期刊类数据库(中文期刊类数据库有哪些?各有什么特点?)2025-11-25 23:36:07
  • 达梦数据库端口默认(达梦数据库默认安装路径)2025-11-25 23:36:07
  • 数据库端口访问不了怎么办(数据库端口访问不了怎么办呀)2025-11-25 23:36:07
  • db数据库用什么打开(db数据库文件怎么打开)2025-11-25 23:36:07
  • 全屏图片