mysql数据库索引有哪些类型?最左前缀原则和索引算法有什么区别?
索引是一种对数据库表中一个或多个列的值进行排序的结构。一个非常恰当的比喻是一本书的目录和书的正文内容之间的关系。为了方便搜索书籍内容,通过对内容建立索引来创建目录。索引是占用物理空间的文件。
主键索引:数据列不允许重复或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前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。