For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,越来越多的程序员都在学习MySQL数据库架构应用等技术知识,而本文我们就简单来了解一下,MySQL数据库索引模型与创建原则。
1、索引常见的三种模型
hash表
排序数组
二叉查找树
hash表是一种以键-值存储数据的结构,通过key直接直接找到对应的vale。hash表只适用等值查询场景,对范围查找就失效了。
排序数组支持等值查询和范围查询,在有序数组中,使用二分查找,查询的时间复杂度是O(logn)。从查询效率来说,有序数组确实是一个很好的选择。但是需要添加或者删除数据时,为了保证数组的有序性,往中间插入的数据,需要移动数组后面的数组,而内存的分配是很耗时的过程。
二叉树查找树也叫二叉搜索树,它的特定是一个结点上左子树上所有的值都小于右子树上所有的值,可以将索引的值有序的保存在二叉树上。
2、B+树和B树的区别
b树节点存储数据,b+树的节点不存储数据,只是存索引,数据都存储在叶子节点。
b+树叶子节点用链表串联起来,而b树没有。
3、创建索引的几个原则
左匹配原则,mysql会一直向右匹配知道遇到范围查询(>、<、between、like)就停止匹配,比如a=1andb=2andc>3andd=4,如果建立(a,b,c,d)顺序的索引,d是用不到索引的。如果建立(a,b,d,c)的索引都可以用到,a、b、d的顺序可以任意调整。
=和in可以乱序,比如a=1andb=2andc=3建立(a,b,c)索引可以任意顺序,mysql查询优化器会4、优化查询索引
尽量选择区分度高的列作为索引,区分度指的字段的不重复性比例,比例越大,扫描的记录就越少,键的区分度是1,而一些状态,性别区分度在数据量大的面前区分度就是0
索引不能参与计算,保持列的干净,不能在索引列上添加函数,或者运算之类。因为b+树存储的是数据表的数据,而经过运算的数据和b+树上的数据不能做比较,导致索引失效
尽量的扩展索引,不要新建索引。比如表中原来有a的索引,现在要添加b的索引,把原来的索引扩展成(a,b)的索引即可。因为没建一个索引,就需要创建一个b+树。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。