Code前端首页关于Code前端联系我们

mysql数据库索引有哪些类型?最左前缀原则和索引算法有什么区别?

terry 2年前 (2023-09-26) 阅读数 42 #数据库

索引是一种对数据库表中一个或多个列的值进行排序的结构。一个非常恰当的比喻是一本书的目录和书的正文内容之间的关系。为了方便搜索书籍内容,通过对内容建立索引来创建目录。索引是占用物理空间的文件。

主键索引:数据列不允许重复或NULL。一张表只能有一个主键。

唯一索引:数据列不允许重复,允许NULL值。一个表允许多个列创建唯一索引。

可以通过 alter table table_name add unique(列)来创建唯一索引;

您可以创建的唯一索引 alter table table_name add unique (column1,column2); 创建唯一组合索引

普通索引: 基本索引类型,无唯一性约束,允许NULL值。

可以通过 ALTER TABLE table_name ADD INDEX index_name (column) 创建普通索引;

可以通过AL 1,第 2 列,第 3 列)创建普通索引;创建组合索引

全文索引:是目前搜索引擎使用的一项关键技术。

可以通过ALTER TABLE table_name ADD FULLTEXT(列)创建全文索引;

最左边的前缀

  • ,就像左边第一个名字所暗示的那样。创建多列索引时,根据业务需要,将where子句中最常用的列放在最左边。
  • 还有一个效率原则。比如
index(a,b,c)
where a=3	只使用了a
where a=3 and b=5	使用了a,b
where a=3 and b=5 and c=4	使用了a,b,c
where b=3 or where c=4	没有使用索引
where a=3 and c=4	仅使用了a
where a=3 and b>10 and c=7	使用了a,b
where a=3 and b like '%xx%' and c=7	使用了a,b
复制代码

索引算法是BTree Hash

BTree是mysql数据库使用最广泛的索引算法,也是mysql的默认算法。因为它不仅可以应用于=、>、>=、=、

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门