mysql辅助索引相关知识
-
MySQL索引之主键索引在MySQL里,主键索引和辅助索引分别是什么意思,有什么区别?上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助索引的区别。1、主键索引主键索引,简称主键,原文是PRIMARY KEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录。一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。在MySQL中,InnoDB数据表的主键设计我们通常遵循几个原则:1、采用一个没有业务用途的自增属性列作为主键;2、主键字段值总是不更新,只有新增或者删除两种操作;3、不选择会动态更新的类型,比如当前时间戳等。这么做的好处有几点:1、新增数据时,由于主键值是顺序增长的,innodb page发生分裂的概率降低了;可以参考以往的分享“[MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键”;2、业务数据有变更时,不修改主键值,物理存储位置发生变化的概率降低了,innodb page中产生碎片的概率也降低了。MyISAM表因为是堆组织表,主键类型设计方面就可以
-
主键索引就是聚集索引?MySQL 索引类型大梳理@[toc] 之前松哥在前面的文章中介绍 MySQL 的索引时,有小伙伴表示被概念搞晕了,主键索引、非主键索引、聚簇索引、非聚簇索引、二级索引、辅助索引等等,今天咱们就来捋一捋这些概念。 1. 按照功能划分 按照功能来划分,索引主要有四种: 普通索引 唯一性索引 主键索引 全文索引 普通索引就是最最基础的索引,这种索引没有任何的约束作用,它存在的主要意义就是提高查询效率。 普通索引创建方式如下: CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREM
-
mysql的索引类型,不看不知道!关于mysql中的索引类型,除了常见的普通索引,唯一索引,组合索引,今天再给大家总结分享一些mysql中的索引类型:聚簇索引 (Clustered Index)非聚簇索引主键索引(PRIMARY KEY)辅助索引(Secondary Indexes)HASH索引BTREE索引T-TREE索引R-Tree索引自适应hash索引(Adaptive Hash Index)唯一索引 (UNIQUE Indexs)普通索引 (Normal index)全文索引 (FULLTEXT Indexes)空间索引 (Spatial indexes)组合索引 (Multiple-Column Indexes)覆盖索引倒序索引 (Descending Indexes)不可见索引(Invisible Indexes) 以上是比较全面的介绍了mysql中索引类型。如果你还知道什么其他类型的索引可以关注慕课网~
-
MySQL实战 | 05 如何设计高性能的索引?其中,有这么一个点,说的是 InnoDB 引擎中使用的是聚簇索引,其主索引的实现树中的叶子结点存储的是完整的数据记录,而辅助索引中存储的则只是辅助键和主键的值。这样在用辅助索引进行查询时,会先查出主键的值,然后再去主索引中根据主键的值查询目标值。比如,假想一个表如下图存储了 4 行数据。其中 Id 作为主索引,Name 作为辅助索引。IdNameCompany5GatesMicrosoft7BezosAmazon11JobsApple14EllisonOracle对于聚簇索引,若使用主键索引进行查询,select * from tab where id = 14 这样的条件查找主键,则按照 B+ 树的检索算法即可查找到对应的叶节点,之后获得行数据。若使用辅助索引进行查询,对 Name 列进行条件搜索,则需要两个步骤:1、第一步在辅助索引 B+ 树中检索 Name,到达其叶子节点获取对应的主键值。2、第二步根据主键值在主索引 B+ 树中再执行一次 B+ 树检索操作,最终到达叶子节点即可获取整行数据。上面这个过
mysql辅助索引相关课程
mysql辅助索引相关教程
- MySQL 索引详细解读 索引是数据库中用来提高性能的常用工具。本节主要介绍 MySQL 索引的概念,及其优点。
- 4 mapActions 辅助函数 mapActions 辅助函数帮助我们简化提交 action 的写法。
- 1.索引概念 索引在 MySQL 中也叫“键(Key)”,是存储引擎用于快速查找记录的一种数据结构,这也是索引的基本功能。MySQL 索引的工作原理,类似一本书的目录,如果要在一本书中找到特定的知识点,先通过目录找到对应的页码。在 MySQL 中,存储引擎用类似的方法使用索引,先在索引找到对应值,再根据索引记录找到对应的数据行。简单总结,索引就是为了提高数据查询的效率,跟一本书的目录一样。以下查询假设字段 c2 上建有索引,则存储引擎将通过索引找到 c2 等于 测试01 的行。也就是说,存储引擎先在索引按值进行查找,再返回所有包含该值的数据行。mysql> select * from t1 where c2='测试01'\G*************************** 1. row ***************************c1: 1c2: 测试011 row in set (0.00 sec)从执行计划的角度,也可以看出索引 idx_c2 被使用:mysql> create table t1( -> c1 int not null auto_increment, -> c2 varchar(10) default null, -> primary key(c1) -> ) engine = innodb;Query OK, 0 rows affected (0.05 sec)mysql> insert into t1() values(1,'测试01');Query OK, 1 row affected (0.00 sec)mysql> create index idx_c2 on t1(c2);Query OK, 0 rows affected (0.02 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> explain select * from t1 where c2='测试01'\G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: t1 partitions: NULL type: refpossible_keys: idx_c2 key: idx_c2 key_len: 33 ref: const rows: 1 filtered: 100.00 Extra: Using index1 row in set, 1 warning (0.00 sec)常见的索引类型主要有 B-Tree 索引、哈希索引、空间数据索引(R-Tree)、全文索引,在后续小节将详细介绍。InnoDB 和 MyISAM 存储引擎可以创建 B-Tree 索引,单列或多列都可以创建索引;Memory 存储引擎可以创建哈希索引,同时也支持 B-Tree 索引;从 MySQL5.7 开始,InnoDB 和 MyISAM 存储引擎都可以支持空间类型索引;InnoDB 和 MyISAM 存储可以支持全文索引(FULLTEXT),该索引可以用于全文搜索,仅限于CHAR、VARCHAR、TEXT 列。
- 2. 索引优点 索引最大的作用是快速查找数据,除此之外,索引还有其他的附加作用。B-Tree 是最常见的索引,按照顺序存储数据,它可以用来做 order by 和 group by 操作。因为 B-Tree 是有序的,将相关的值都存储在一起。因为索引存储了实际的列值,某些查询仅通过索引就可以完成查询,如覆盖查询。总的来说,索引三个优点如下:索引可以大大减少 MySQL 需要扫描的数据量;索引可以帮助 MySQL 避免排序和临时表;索引可以将随机 IO 变为顺序 IO。但是,索引是最好的解决方案吗?任何事物都是有两面性的,索引同样如此。索引并不总是最好的优化工具对于非常小的表,大多数情况,全表扫描会更高效;对于中大型表,索引就非常有效;对于特大型表,建索引和用索引的代价是日益增长,这时候可能需要和其他技术结合起来,如分区表。总的来说,只有当使用索引利大于弊时,索引才是最好的优化工具。
- 4 mapMutations 辅助函数 mapMutations 辅助函数帮助我们简化提交 mutation 的写法。
- 4. 覆盖索引 如果一个索引包含所有需要查询的字段,称之为覆盖索引。由于覆盖索引无须回表,通过扫描索引即可拿到所有的值,它能极大地提高查询效率:索引条目一般比数据行小的多,只通过扫描索引即可满足查询需求,MySQL 可以极大地减少数据的访问量。表 customer 有一个多列索引 (first_name,last_name),以下查询只需要访问 first_name 和last_name,这时就可以通过这个索引来实现覆盖索引。mysql> explain select last_name, first_name from customer\G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: customer partitions: NULL type: indexpossible_keys: NULL key: idx1_customer key_len: 186 ref: NULL rows: 1 filtered: 100.00 Extra: Using index1 row in set, 1 warning (0.00 sec)当查询为覆盖索引查询时,在 explain 的 extra 列可以看到 Using index。
mysql辅助索引相关搜索
-
mac osx
machine_start
macox
magellan
malloc
manifest
manifest文件
map
map 遍历
mapreduce编程
maps google com
margin
margin bottom
margin left
margin right
margin top
marginbottom
marginheight
marginleft
margintop