索引中前导列的作用是 前后索引的区别

您所在的位置:网站首页 索引前导列 索引中前导列的作用是 前后索引的区别

索引中前导列的作用是 前后索引的区别

2024-06-24 17:26| 来源: 网络整理| 查看: 265

索引是对数据库表中一列或多列的值进行排序的一种结构。一个非常恰当的比喻就是书的目录页与书的正文内容之间的关系,为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。

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

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

可以通过 ALTER TABLE table_name ADD UNIQUE (column); 创建唯一索引

可以通过 ALTER TABLE table_name ADD UNIQUE (column1,column2); 创建唯一组合索引

普通索引: 基本的索引类型,没有唯一性的限制,允许为NULL值。

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

可以通过ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);创建组合索引

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

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

最左前缀顾名思义,就是最左优先,在创建多列索引时,要根据业务需求,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默认的算法。因为它不仅可以被用在=,>,>=,

如果一通配符开头,或者没有使用常量,则不会使用索引,例如:

select * from user where name like '%jack';

复制代码

Hash Hash索引只能用于对等比较,例如=,(相当于=)操作符。由于是一次定位数据,不像BTree索引需要从根节点到枝节点,最后才能访问到页节点这样多次IO访问,所以检索效率远高于BTree索引。

BTree索引是最常用的mysql数据库索引算法,也是mysql默认的算法。因为它不仅可以被用在=,>,>=,

select * from user where name like 'jack%';

如果一通配符开头,或者没有使用常量,则不会使用索引,例如:

select * from user where name like '%jack';

复制代码

Hash Hash索引只能用于对等比较,例如=,(相当于=)操作符。由于是一次定位数据,不像BTree索引需要从根节点到枝节点,最后才能访问到页节点这样多次IO访问,所以检索效率远高于BTree索引。

索引设计的原则?适合索引的列是出现在where子句中的列,或者连接子句中指定的列

基数较小的类,索引效果较差,没有必要在此列建立索引

使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间

不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以只保持需要的索引有利于查询即可。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3