- 浏览: 209711 次
- 性别:
- 来自: 哈尔滨
文章分类
- 全部博客 (267)
- java.lang (8)
- 问题汇总 (21)
- 异常记录 (20)
- 功能实现 (19)
- 面试总结 (25)
- 技巧总结 (8)
- 常用代码 (4)
- 编程习惯 (3)
- 编码规则 (3)
- java.util (10)
- java.io (1)
- JavaWeb (9)
- MySQL (16)
- SVN (3)
- MyBatis (11)
- Velocity (7)
- 其他知识 (10)
- 人生哲理 (1)
- 人生故事 (1)
- 自我感悟 (1)
- shiro (3)
- 基础知识 (0)
- 问题总结 (1)
- Spring 标签 (1)
- Spring (3)
- 点滴生活 (1)
- DOS (1)
- CAS (4)
- Linux (9)
- Storm (6)
- Shell (1)
- regex (1)
- Collection (4)
- poi (1)
- 经典语句 (1)
- NIO (5)
- concurrent (14)
- RPC (1)
- zookeeper (3)
- 待整理 (2)
- Hadoop (9)
- RabbitMq (2)
- flume (1)
- hive (7)
- hbase (4)
- kafka (1)
- scala (1)
- GC (0)
- java.util.concurrent.atomic (1)
- java.lang.ref (6)
- JVM (2)
- algorithm (1)
- conception (1)
- java key word (1)
- sun.misc (1)
最新评论
索引相关
一、InnoDB 与 MyISAM 对比
存储引擎 | InnoDB | MyISAM |
存储结构 | InnoDB表空间数据文件和它的日志文件;表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引 | MyISAM表建立三个不同的文件;表定义、数据文件、索引文件 |
索引的数据结构 | B+树 | B+树 |
叶子节点的键值KEY | 表的主键(一般主键INT无符号自增) | 索引的相应字段的值 |
叶子节点的DATA域 | 保存完整的数据记录 | 数据记录的地址,即数据文件中的每行数据的地址 |
辅助索引 | 辅助索引data域存储相应记录主键的值而不是地址 | 与主索引在结构上无区别,主索引不可以重复,辅助索引可以 |
索引的类型 | 聚集索引 | 非聚集索引 |
全文索引、压缩索引 | 不支持 | 支持 |
主辅索引 | IAnnoDB主键节点同时保存数据行,其他辅助索引保存的是主键索引的值 | MyISAM顺序储存数据,索引叶子节点保存对应数据行地址,辅助索引很主键索引相差无几 |
数据存储 | InnoDB键值一起保存,索引与数据一起载入InnoDB缓冲池 | MyISAM键值分离,索引载入内存(key_buffer_size),数据缓存依赖操作系统 |
索引顺序 | 升序;优点:缩短索引键值的大小;缺点:不支持倒叙提取索引 | 不一定 |
博文参考:
由浅入深探究mysql索引结构原理、性能分析与优化
二、注意事项
1.InnoDB本身按照主键作为KEY形成的B+树结构,所以表必须有主键;无主键,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形
2.InnoDB不建议使用过长的字段作为主键,因为辅助索引在检索时是通过查找主索引来间接实现的;那么辅助索引的节点的data域中存放主索引的值,因为主索引很长,索引存储空间会加大
3.InnoDB主键单调,因为InnoDB的数据文件整体是一个B+树的结构,如果出现重复的数据,会不断的调整B+树的结构,增加维护成本及时间
4.InnoDB中辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录
博文参考:
MySQL索引背后的数据结构及算法原理
三、名词解释
存储引擎 | 聚集索引 | 非聚集索引 |
定义 | 索引中键值的逻辑顺序决定了表中相应行的物理顺序;检索范围数据快速,数据已经按照顺序排序,而无需进行数据排序处理; | 索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同 |
叶子节点 | 索引的叶节点就是数据节点;如InnoDB的B+树的索引结构中DATA中存放数据的完整记录 | 叶节点存放的是索引节点,有一个指针指向对应的数据块;如MyISAM的B+树的索引结构中DATA中存放指向数据表中记录的物理地址 |
数量 | 每个表中只能有一个 | 根据实际使用索引的情况而定 |
博文参考:
聚集索引和非聚集索引
发表评论
-
SQL优化示例
2017-11-03 15:34 477一、distinct 、 union all 、 union ... -
索引相关
2017-11-02 20:42 513一、索引分类 1.单列索引:一个索引包含一列,一个表可以包含 ... -
检索指定时间范围内的数据与预期不一致
2017-10-30 20:38 565问题背景: 在不同日期内进行不同的业务逻辑,在测试环境进行模拟 ... -
存储引擎InnoDB与MyISAM区别
2017-10-29 17:26 376存储引擎 一、总结 名称MyISAMInnoDB事务不支持支 ... -
常用索引优化
2017-10-29 16:07 383唯一索引 联合索引 索引方式:BTREE 1.order b ... -
统计每天的数据
2017-10-10 21:23 543需求:按天统计数据 分析:create_time 为 dat ... -
DDL - CREATE
2017-08-05 06:10 483一、基本语句 CREATE TABLE `data_te ... -
数据统计
2016-06-12 17:04 556按照时间统计各个阶段的数据数量 1.统计每个月卖家的注册数量 ... -
1030 Got error 28 from storage engine
2016-05-24 22:25 1317现象:调试程序过程中,突然报错,显示数据检索失败,数据库连接超 ... -
批量数据修改
2015-08-19 15:39 439问题:增加新功能,需要初始化数据,执行update、inser ... -
mysql 如何查询出某字段的值不为空的数据
2015-06-30 19:05 2904问题:查询原有某类数据的数量,对比发现,新旧数据的差距是新插入 ... -
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException
2015-05-21 15:38 840异常: com.mysql.jdbc.exceptions.j ... -
You can't specify target table <tbl> for update in FROM clause
2015-04-23 10:50 729[size=large][/size] mysql中You ... -
MySQL-删除除id外其他内容都相同的数据
2015-04-23 09:24 1095删除除id外其他内容都相同的数据 难点:自己不能删除自己,要 ... -
MySQL常用操作总结
2015-04-23 08:32 540常用数据表操作: 虽然有DBA的存在,但PD(program ...
相关推荐
在本项目中,我们主要探讨的是“nachos二级索引文件系统”,这是一个与操作系统相关的实验,特别是关于文件系统的改进。 Nachos是一个开源的操作系统教学平台,它为学生提供了理解和实现操作系统基本概念的机会。在...
本地索引是一种特殊的分区索引,它与表的分区紧密相关,即索引的分区策略完全遵循表的分区策略。 ##### 1. 特点: - **分区机制**:本地索引的分区键等同于表的分区键,分区数也等同于表的分区数。 - **前缀索引**...
#### 二、组合索引 组合索引是指包含多个列的索引。这种类型的索引可以在某些情况下提高查询效率。例如,在Oracle 9i版本之前,如果一个组合索引的第一个列没有出现在WHERE子句中,那么Oracle将无法利用这个索引来...
以下将详细介绍基于Java的二维网格索引及其相关知识点。 1. **二维网格的基本概念** - 二维网格将空间区域划分为小的、均匀大小的单元,每个单元都有一个唯一的标识,即网格索引。这种方法简化了大规模空间数据的...
4. **写路径**:在数据写入时,除了将数据写入到相应的Region中,还需要同时更新相关的二级索引。这意味着数据写入过程会变得更加复杂,但为了保证查询效率这是必要的。 5. **读路径**:在执行查询时,首先根据二级...
例如,在一本科技类图书中,可以将一级索引设为大类别(如“计算机科学”),二级索引为子类别(如“编程语言”),三级索引为具体语言(如“Python”),四级索引则可以是特定的函数或概念(如“Python的for循环”...
位图索引则适用于处理布尔值或有限范围的数值,通过一系列的二进制位来表示数据是否存在。 索引在数据库系统中扮演着关键角色。当我们对一个表进行查询时,如果没有索引,数据库需要执行全表扫描,即逐行检查直到...
- 收集与索引操作相关的日志信息。 #### 五、注意事项 - 在执行上述操作之前,请确保集群中的Zookeeper IP地址已被替换为您自己的集群IP地址。 - 在修改配置文件前做好备份工作,以防配置出错导致的数据丢失。 - ...
例如,一级索引可能包含对二级索引的引用,二级索引再指向数据文件中的具体记录。 接着,我们了解几种常见的文件组织形式: 1. 顺序文件:这是最基础的文件组织形式,数据按照一定的顺序存储,查找时需从头开始...
每当有数据插入、删除或更新时,不仅需要在聚簇索引中更新数据,还需要在所有相关的索引上进行调整。在创建索引时,要考虑到这些成本和对查询性能的提升之间的平衡。 总的来说,二级索引为数据库提供了基于非主键...
这个压缩包文件“nachos二级索引文件系统报告(附源代码)”包含了对Nachos操作系统中二级索引文件系统改进的详细研究和实现过程,以及相关的源代码。 首先,我们来深入理解二级索引文件系统。在传统的文件系统中,...
该算法利用有序的键值(Key-Value)结构将相关节点和边尽可能地以相邻的方式 存储,并为高效的属性查询和邻居查询分别构造二级索引和 hash 节点索引。此外,为了节省存储空间,GComIdx 算法采用压缩算法来降低图数据...
- **避免过度索引**:过多的索引会增加写入操作的时间,因为每次写入都需要更新所有相关的索引。 - **考虑查询模式**:索引应根据最常用的查询模式进行设计,优先考虑那些能带来最大性能提升的查询。 - **使用复合...
#### 二、创建索引 根据提供的描述,创建索引的具体命令为: ```sql CREATE INDEX CUS_LOWER_ENERGY_JLDNY ON CUS_LOWER_ENERGY (JLDBH, DLNY, HWBZ) TABLESPACE TS_DSM_INDEX PCTFREE 10 INITRANS 2 MAXTRANS...
### SQL Server 建立索引相关知识点 #### 一、建立索引 索引是在数据库表中的数据列上创建的一种特殊的数据结构,其目的是为了加快数据检索速度。索引类似于书籍的目录,通过索引可以快速定位到所需的数据行,从而...
3. **索引的独立性**:索引在逻辑上和物理上都与相关的表和数据无关。这意味着即使创建或删除了一个索引,也不会对基本表的数据产生影响。 4. **索引的自动管理**:索引一旦建立,在表上进行DML操作时(如插入、修改...
在JavaScript开发中,静态二维空间索引是一种优化技术,用于高效地管理和检索二维坐标系统中的对象,例如点或矩形。这种索引方法通常应用于游戏开发、地理信息系统、图形渲染等场景,它允许我们快速查询特定区域内...
Nexus是Sonatype公司开发的一款强大的 Maven、NuGet、npm、RubyGems、Pypi等软件包管理器,它提供了一种集中式的方式来管理和...同时,了解并利用好提供的相关资源,如压缩包中的文档和工具,将使得这个过程更加顺畅。
#### 14.8 2005 新增:与全文索引相关的 T-SQL 语句 - **14.8.1 创建全文目录**:使用 `CREATE FULLTEXT CATALOG` 语句创建全文目录。 - **14.8.2 更改全文目录属性**:使用 `ALTER FULLTEXT CATALOG` 语句修改已...
- **非聚集索引**:如果经常需要根据客户ID或产品ID查询相关的交易记录,可以在这些列上建立非聚集索引,以提高单个记录查询的效率。 综上所述,合理的索引设计对于提高数据库性能至关重要。选择正确的索引类型需要...