`

mysql索引认知

 
阅读更多

索引原理:

数据在磁盘中是以“块”的形式存储的,所以一张表涉及的数据可能会存在多个块中,而在磁盘中查询数据则会根据字段是否为有序与无序来区分,

无序情况:1.数值具有唯一性则需要查找 总块数/2

                  2.无序+无唯一性则需要查找  总块数

 

有序情况:1.数值唯一性:log2(总块数/2)   (log2是二分查找算法

                  2.无唯一性:log2(总块数)

         

结论:索引是对字段的有序排序,属于有序情况,其查找的块数大大减少了,所以才能大大提高查询的效率

 

举例:有一个myisam的表good,记录数是500w,每个记录的字节数是204,而做了索引的有序字段字节数是54(建立索引时候会创建一个索引数据结构,往后的查询就是在该结构上做处理,下面的“什么是索引”有提及到该点)

 

情况:myisam默认的块的字节数是1024, 所以一个块能存储的记录数是5(1024/204),索引的一个块能存储的记录数是18(1024/54), 那么good表需要的总块数是100w(500w/5),而good的索引字段需要的总块数是277778(500w/18)

 

结论:有序的字段查询(索引的字段)需要查找的块数是:log2(277778) 或 log2(277778/2), 具体看该索引字段是否存在值唯一性,而无序字段则需要查找100w或者50w个块,效率低下啊

 

什么是索引(What is indexing)?

索引是对记录集的多个字段进行排序的方法。在一张表中为一个字段创建一个索引,将创建另外一个数据结构,包含字段数值以及指向相关记录的指针,然后对这个索引结构进行排序,允许在该数据上进行二分法排序。

 

副作用是索引需要额外的磁盘空间,对于MyISAM引擎而言,这些索引是被统一保存在一张表中的,这个文件将很快到达底层文件系统所能够支持的大小限制,如果很多字段都建立了索引的话

 

分享到:
评论

相关推荐

    实验一 MYSQL数据库管理系统的安装及认知1

    【实验一 MYSQL数据库管理系统的安装及认知】 实验目的是让学生熟悉MySQL数据库管理系统,了解相关术语,掌握MySQL的安装和使用环境,以及如何在MySQLWorkbench中执行SQL语句。实验内容包括MySQL5数据库的安装,...

    MySQL数据库应用实战教程(慕课版)-PPT详细版.rar

    这类资料通常会按照一定的教学逻辑组织内容,由浅入深,帮助学习者逐步建立起对MySQL数据库的系统认知。 压缩包中的文件名"48900-5 MySQL数据库应用实战教程(慕课版)---电子教案"可能是指该课程的第五部分,意味...

    数据库对比 Oracle 和 MySQL 的对比 我的数据库认知学习

    【Oracle vs MySQL:数据库对比与理解】 在数据库领域,Oracle 和 MySQL 是两种广泛使用的数据库管理系统,各有其特点和优势。Oracle 通常被视为大型数据库系统,适用于处理高并发、大规模的数据,而 MySQL 则更...

    MYSQL优化实施方案

    - **潜在的风险**:优化手段本身就带有一定的风险,有时候这些风险甚至超出了我们的认知和预见。 - **技术的双刃剑**:任何技术都能解决一个问题,但同时也有可能引入新的问题。 - **可控的风险**:在优化过程中,...

    MySQL入门教程 简单

    通过本教程的学习,你将能够建立起对MySQL数据库系统的基本认知,熟练掌握常见的SQL操作,并具备在实际项目中运用MySQL的能力。对于进一步深入学习数据库设计、性能调优以及高级特性,这将是一个良好的起点。

    001-MySQL视频教程-数据库概述

    通过“001-MySQL视频教程-数据库概述”,学习者将建立起对数据库和MySQL的基础认知,并为后续更深入的MySQL学习打下坚实基础。了解这些基础知识,对于任何需要处理数据的开发者来说都是至关重要的。

    Mysql教程,内容详细

    这部分内容对于初学者来说至关重要,能够帮助他们建立起对数据库管理系统的初步认知,并具备基本的数据库操作能力。 第二部分:MySQL进阶 在进阶部分,教程将深入探讨事务处理、备份与恢复、性能优化、安全性设置等...

    mysql5.1简体中文手册珍藏版

    这部手册首先介绍了MySQL的基本概念,包括数据库、表、字段和索引等核心元素。数据库是存储数据的容器,表则是结构化的数据集合,字段定义了表中的每一列,而索引则提高了数据查询的速度。对于初学者,这部分内容有...

    Apress.Pro.MySQL.Jul.2005

    - **数据库系统的基本概念**:介绍了数据库系统的基本组成及其工作原理,帮助读者建立对数据库系统的整体认知。 - **MySQL的历史和发展**:回顾了MySQL的发展历程,包括其从开源项目成长为全球最受欢迎的关系型...

    5天带你玩转MySQL-资料.rar

    以上就是"5天带你玩转MySQL"可能涉及的知识点,通过这个教程,学习者可以逐步建立起对MySQL的系统认知,并具备实际操作和问题解决能力。在实践中不断深化理解,才能真正玩转MySQL,为个人或企业的IT项目提供强大支撑...

    逐步精通MySQL数据库(教学光盘)

    通过这些章节的学习,你将能够逐步建立起对MySQL数据库系统的全面认知,无论是进行日常的数据管理,还是开发复杂的数据库应用,都将游刃有余。这个教学光盘的资源将是你学习过程中宝贵的辅助材料,它提供了实践操作...

    Sql Server查询性能优化之不可小觑的书签查找介绍

    小小程序猿SQL Server认知的成长 1.没毕业或工作没多久,只知道有数据库、SQL这么个东东,浑然分不清SQL和Sql Server Oracle、MySql的关系,通常认为SQL就是SQL Server 2.工作好几年了,也写过不少SQL,却浑然不知道...

    架构设计面试精讲2021年

    │ 09 如何回答 MySQL 的索引原理与优化问题?.mp4 │ 10 如何回答 MySQL 的事务隔离级别和锁的机制?.mp4 │ 11 读多写少:MySQL 如何优化数据查询方案?.mp4 │ 13 缓存原理:应对面试你要掌握 Redi 哪些原理...

    详解知名网站的技术发展历程.docx

    Google还对MySQL数据库进行了定制,以适应其特定需求,相关信息可在Google-mysql项目中找到。到了2021年,Google将索引构建时间缩短至分钟级,确保新网页内容能迅速被搜索到,同时Index Cluster通过Protocol Buffers...

    SQL 21天自学全攻略

    通过21天的学习,你可以逐步建立起对SQL的全面认知,并具备实际操作数据库的能力。配合《SQL21自学通.pdf》这份资料,每日坚持学习,相信你在短时间内就能掌握SQL这一重要的数据库语言,为你的IT职业生涯奠定坚实...

    基于微信小程序的日语学习系统 开题报告.doc

    同时,需要对微信小程序软件开发、后台数据分析应用进行深入研究和分析,使用文献索引、案例研究等方法,研究已有的微信小程序、学习平台开发模式,并将自己对技术面的认知与实践经验相结合。 本项目的实施方案包括...

    SQL 实用教程(第二版)

    了解这些概念有助于构建对数据库结构的整体认知。 2. SQL语句类型:SQL主要由四大类语句组成——DQL(数据查询语言)、DML(数据操纵语言)、DDL(数据定义语言)和DCL(数据控制语言)。DQL用于检索数据,如SELECT...

    基于Android的房屋出租出售APP设计(服务端+客户端+数据库).zip

    - 数据库设计包括表的创建、字段定义、主键和外键设置,以及可能的索引优化,这些对于应用的高效运行至关重要。 3. **客户端开发**: - **UI设计**: 客户端界面是用户与应用交互的窗口,可能包括房源列表、详情...

    数据库系统工程师 历年真题及答案

    2. **数据库系统**:数据库系统是管理和存储数据的软件,包括数据库管理系统(如Oracle、MySQL、SQL Server等)及其相关组件。考生需要了解各种数据库系统的架构、语法、特性以及最佳实践。 3. **真题**:通过研究...

Global site tag (gtag.js) - Google Analytics