`

什么样的列使用索引?

阅读更多
什么样的列使用索引?
这个问题以前经常面试别人,大多数的回答都是非常浅的。只回答重复度低的,为什么重复度低的就适合采用索引,好像很少有人能答出来。

先说一个前提,所有的系统瓶颈最终都落在io上,包括网络io和磁盘io,例如,一台机器cpu每秒可以执行5亿条指令,如果是7200转的磁盘的话,一分钟7200转,一转1/120秒,大概要9-11毫秒的样子。换句话说,一次磁盘访问的时间大概是40万条指令。所以我们希望的是能充分利用cpu,减少磁盘的访问次数。B+tree正好符合这一场景,增加了运算次数,减少了数据读取的次数。

关系型数据库大多采用的索引算法就是B+tree,树天生就是解决查找问题的,数据的重复度越低,越能体现出价值。对于重复的数据,只能使用rowid标示一下。这里不具体讲B+tree的结构了,有兴趣的可以百度一下。

注:转。
分享到:
评论

相关推荐

    创建索引和调优索引

    为了保持索引的最佳状态,可以使用重新组织或重新生成索引来处理碎片问题。这不仅可以优化查询性能,还能在大型索引操作中节省磁盘空间。 优化索引还包括设置索引选项,如调整填充因子,以适应不同的查询模式。...

    MySQL分区字段列有必要再单独建索引吗?

    2. **索引覆盖**:如果查询仅涉及索引中的列,且这些列包括分区字段,那么索引覆盖现象可以进一步提升查询速度,因为MySQL可以直接从索引中获取所有需要的数据,而无需回表到原始数据行。 3. **唯一性约束**:如果...

    浅谈SQL Server中索引的使用.pdf

    在选择是否建立索引以及建立什么样的索引时,需要考虑多个方面。首先,数据的查询模式和查询条件是决定建立索引的关键。主键通常是where子句中的条件,因此适合建立聚簇索引,尤其是在经常用作连接操作时。对于那些...

    oracle 索引类型

    正确地设计和使用索引,可以极大地提升数据库的性能。在实际工作中,应结合数据量、查询模式和更新频率来综合考虑,选择最适合的索引类型。同时,定期分析和优化索引,确保其始终保持最佳状态。

    标准文档模板下载,你可以套用已经建好的索引

    "标准文档模板下载,你可以套用已经建好的索引"这一标题揭示了模板的核心价值,即提供了一个预设好结构、目录和索引的框架,使用者只需填充内容即可。 描述中的“不用检索引,直接套用模板”表明模板已包含了完整的...

    如何写出高效率的SQL语句--SQL优化技巧

    什么样的列需要建索引? 经常用于查询、排序和分组的列(即经常在 WHERE、ORDER 或 GROUP BY 子句中出现的列)需要建立索引。 主键索引和复合索引 对于一张表的主键,系统会自动为其建立索引。如果一张表的几列...

    ORACLE索引介绍与高性能SQL优化.pdf

    - 对于组合查询,可以创建复合索引来提高效率,但需注意最常使用的列应放在索引前列。 - 定期检查并删除不再需要的索引,以保持数据库的整洁和高效。 创建索引时,需要考虑存储参数,如tablespace(表空间)、...

    第11章 索引a.pdf

    单列索引是基于单一列创建的,而复合索引涉及多列,适用于需要同时考虑多个字段的查询。唯一索引确保索引项的唯一性,不允许有重复值;非唯一索引则允许重复值。全文索引用于全文搜索,能够对文本内容进行匹配;空间...

    MySQL数据库和SQL数据优化.docx

    什么样的字段适合创建索引? 索引是建立在数据库表中的某些列的上面。因此,在创建索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该在具备下述特性的列上创建索引: * 在...

    SQLServer高频面试题及答案

    22. 什么样的字段适合建索引? 适合建索引的字段是那些频繁查询的字段,可以提高数据查询效率。 23. 聚集索引和非聚集索引有什么区别? 聚集索引和非聚集索引是两种不同的索引类型。聚集索引是将数据和索引存储在...

    索引

    位图索引则在内存资源充足时,对于低基数(非唯一)的列有很好的查询性能。 在数据库设计中,创建合适的索引是优化查询性能的关键步骤。然而,索引并非越多越好,过多的索引会增加数据库的维护成本,占用额外的存储...

    数据库索引技术的研究与应用.pdf

    - 在设置索引时,需要根据具体的业务需求和数据访问模式来决定哪些列需要建立索引。 - 应考虑到不同类型的索引(如B树索引、哈希索引等)对查询性能的影响,并合理选择。 - 需要定期评估索引的有效性,并根据实际...

    索引管理方面的精华,弟兄们快下吧

    位图索引是Oracle数据库中一种特殊的索引类型,特别适用于数据仓库环境中的列式存储。它使用位图来表示数据的存储位置,非常适合处理大量重复值的情况,能够极大提高某些类型查询的效率。 综上所述,“索引管理方面...

    MySQL从入门到高级,进阶详解

    -MySQL的基本架构是怎么样的? 如何查看空闲连接列表? -MySQL连接超出默认连接的8小时,除了重连还有其他办法吗? 如何在查询的时候不使用缓存? 缓存查询完后如何工作? -MySQL内部支持缓存查询吗? -MySQL8为何废弃掉...

    Oracle的索引是怎样炼成的

    在这种情况下,索引大约需要360个数据块来存储warecountd表的goodid列的索引条目,总计约288KB(360 * 8KB)。 总的来说,Oracle的索引通过B树结构提高了查询效率,但同时也增加了数据库的维护复杂性和存储需求。在...

    Matlab操作索引

    此外,还可以使用冒号`:`进行赋值,例如`A = 1:2:10`创建一个从1到10以2为步长的序列。 2. 冒号赋值: 冒号赋值用于生成序列,如`A = S1:S2:S3`,其中S1是起始值,S2是步长,S3是终止值。如果不指定步长,它默认为...

    laravel-schema-list:列出数据库连接的表,列和索引

    使用命令行可以轻松列出给定表的数据库表和列。 安装 您可以通过composer安装该软件包: composer require ohseesoftware/laravel-schema-list 用法 列出默认连接中的表: php artisan schema:tables 列出给定表...

    行业-46 一起来看看INSRET语句的undo log回滚日志长什么样?l.rar

    当我们谈论“来看看INSERT语句的undo log回滚日志长什么样?”时,实际上是在探讨数据库如何通过undo log来确保事务的原子性和一致性。 首先,我们需要理解什么是undo log。在关系型数据库中,undo log是事务日志的...

    Vim进阶索引

    ### Vim进阶索引知识点详解 #### 一、Vim简介与重要性 Vim是一款功能强大的文本编辑器,属于Vi类编辑器的一种,并且在众多版本中脱颖而出,成为当前最受欢迎的选择之一。对于中文用户而言,Vim因其对中文的支持...

    如何让SQL运行得更快.doc

    * 组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列。 二、连接条件的重要性 连接条件是 SQL 中一个非常重要的概念,不充分的连接条件可以导致 SQL 的执行速度非常慢。在对连接条件的设计时,...

Global site tag (gtag.js) - Google Analytics