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

mysql查看主键索引(mysql主键索引支持哪些数据类型)MySQL 官方对索引的定义 索引 Index 是帮助 MySQL 高效获取数据的数据结构 由此可知 索引的本质是数据结构 就好像是字典前面的根据拼音和偏旁部首查找具体汉字页数的索引一样 可以大幅提升查找的效率 如果没有索引的话 在查找一些数据时 就需要遍历所有数据来进行查找 麻烦且效率低下 MySQL 中的索引可以理解为 注 B 树中的 B 不是二叉 binary

大家好,我是讯享网,很高兴认识大家。



        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.55.78.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,则表示索引是用来读取数据而非执行查找动作。

小讯
上一篇 2025-06-09 10:37
下一篇 2025-05-22 14:55

相关推荐

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