✔1.node.js初体验windows ✔2.commonjs-回顾ES6模块化 ✔3.commonjs的语法介绍 ✔4.commonjs和ES6 Module的区别 ✔5.Bug分类 ✔6.node.js和前端js的区别 ✔7.左关联 ✔8.聚合函数 ✔9.【案例】统计上班时间 ✔10.数据库的索引 ✔11.索引的分类 ✔12.查询数学成绩比语文成绩高的学生 ✔13.查询平均成绩大于80分的学生 ✔14.学生总成绩排序 ✔15.学过体育课学生的年龄 ✔16.查询学号大年龄小的学生 ✔17.整体回顾 |
|
整体回顾如下:
索引是什么?
索引(Index)是数据库中用于提高数据检索效率的一种数据结构。索引可以看作是一个快速查找表,它存储着数据表中某个列的值和该值在数据表中出现位置的对应关系。通过使用索引,可以加快数据的查询速度,提高数据检索的效率。
在数据库中,如果不使用索引,则每次进行查询操作时都需要从头开始扫描整个数据表,这样会消耗大量的时间和计算资源,尤其是当数据表中存储的数据非常庞大时。而使用索引可以帮助数据库快速地定位到所需数据,减少了扫描整个数据表的时间和计算资源的消耗,从而提高了查询效率。
常见的索引类型包括B树索引、哈希索引、全文索引等,每种类型的索引在不同的场景下都有其适用性和局限性。
索引的作用是什么?
索引的作用是提高数据库查询的效率。具体来说,索引可以帮助数据库快速地定位到数据表中的特定数据,从而避免了每次查询时需要扫描整个数据表的情况,减少了查询所需的时间和计算资源的消耗。
比如说一个数据库中存储了一张包含1000个用户信息的数据表。如果没有使用索引,在执行一次查询操作时,数据库需要遍历整个数据表来查找符合查询条件的数据,这会消耗大量的时间和计算资源。但是如果使用了索引,在建立索引时就会按照某个列的值进行排序,查询时只需要在索引中定位符合查询条件的数据所在的位置即可,这个过程非常快速和高效。
因此,索引的作用是提高数据库查询效率,减少查询所需的时间和计算资源的消耗,使数据库的性能得到优化。同时,索引也可以帮助保证数据的唯一性和完整性,以及支持快速地数据排序和分组。
过度使用索引会带来什么问题?
虽然索引可以提高数据库查询的效率,但过度使用索引也会带来一些问题,主要包括以下几点:
1.降低数据修改性能:每次修改数据表中的数据,都需要更新索引数据结构,如果数据表中的数据非常多或者索引设计得不合理,就会导致修改数据的性能降低。
2.占用过多磁盘空间:索引需要占用一定的磁盘空间来存储索引数据结构,如果过多地创建索引,就会占用过多的磁盘空间,增加存储成本。
3.增加查询优化器的复杂性:查询优化器需要在多个索引之间进行选择,以确定最优的查询计划。如果存在过多的索引,就会增加查询优化器的计算量,导致查询计划的选择变得更加困难。
4.可能导致缓存失效:索引也需要在内存中缓存,以提高查询性能。但是如果索引占用过多的内存空间,就会导致缓存失效,降低查询性能。
因此,过度使用索引可能会导致性能下降、占用过多的磁盘空间、增加查询优化器的复杂性和缓存失效等问题。因此,在设计索引时需要权衡索引的数量和占用空间,避免过度使用索引。
索引的分类?(面试必问)
B树索引:B树索引是一种基于B树数据结构实现的索引,适用于范围查询和等值查询。B树索引的结构是多层的,从根节点到叶节点是逐层递进的,每个节点保存着一个数据页,可以快速定位到所需数据。
哈希索引:哈希索引是一种基于哈希表实现的索引,适用于等值查询。哈希索引根据数据的哈希值进行查找,可以实现快速的数据定位。但是,哈希索引不支持范围查询,也不支持排序。
全文索引:全文索引是一种用于处理文本数据的索引,适用于文本搜索和匹配。全文索引通常使用倒排索引技术,将文本数据转化为一组词条,每个词条对应着一个或多个文档。
空间索引:空间索引是一种用于处理地理空间数据的索引,适用于空间查询和分析。空间索引根据地理坐标对数据进行索引,支持空间范围查询和空间关系查询。
聚集索引:聚集索引是一种特殊的索引类型,它对数据表的主键进行排序,并将主键的值作为索引的键值。聚集索引可以直接定位到数据表的行,因此查询速度非常快。
非聚集索引:非聚集索引是一种将数据表的其他列进行排序,并将列的值作为索引的键值。非聚集索引可以在查询中提高性能,但需要在定位到行后再进行一次查找。
唯一索引:唯一索引是一种限制某个列的值必须唯一的索引类型,可以保证数据表中的某个列不包含重复的值。
总的来说,不同类型的索引在处理不同类型的数据和查询时具有不同的优势和适用性。在设计索引时需要根据数据表的特点和查询需求选择适合的索引类型,以达到最佳的性能优化效果。
MySQL常见存储引擎
InnoDB:InnoDB是MySQL的默认存储引擎。它支持事务、行级锁和外键,适用于高并发、读写频繁的应用场景。InnoDB使用B+树作为索引结构,具有较好的数据一致性和容错能力。
MyISAM:MyISAM是MySQL最早的存储引擎之一。它不支持事务和行级锁,但支持全文索引和压缩表格等特性,适用于读写频率不高的应用场景。
什么是左关联左关联与右关联什么区别?
左关联和右关联都是SQL中的关联查询(Join),用于联结两个或多个表格的数据。
左关联(Left Join):以左表格为基准,将左表格中的所有记录和右表格中的符合条件的记录联结起来。如果右表格中没有匹配的记录,则在结果中将用NULL值来填充。因此,左关联可以保留左表格中的所有记录,即使右表格中没有匹配的记录。
右关联(Right Join):以右表格为基准,将右表格中的所有记录和左表格中的符合条件的记录联结起来。如果左表格中没有匹配的记录,则在结果中将用NULL值来填充。因此,右关联可以保留右表格中的所有记录,即使左表格中没有匹配的记录。
区别在于基准表格不同,左关联以左表格为基准,右关联以右表格为基准。另外,左关联保留左表格中的所有记录,右关联保留右表格中的所有记录。在使用关联查询时,需要根据具体的需求和数据结构选择合适的关联方式。
什么是内关联?全关联?
据说在公司内部 内关联说法 约等于 全关联。
内关联(Inner Join)和全关联(Full Outer Join)是关系型数据库中两种常见的表连接方式。
内关联是一种表连接方式,它根据两个表之间的共同字段进行匹配,然后返回两个表中符合匹配条件的记录。内关联只返回符合条件的记录,不返回未匹配的记录。
全关联是另一种表连接方式,它根据两个表之间的共同字段进行匹配,然后返回两个表中所有记录,包括符合匹配条件的和未匹配的记录。如果一个表中没有匹配的记录,那么它的字段值会被设置为NULL。
需要注意的是,全关联在实际应用中并不常用,因为它会返回大量的NULL值,而且查询效率也较低。在实际应用中,内关联和左连接、右连接等其他表连接方式更为常见。
什么是三范式设计与反范式设计?
三范式设计(Third Normal Form,3NF)是一种关系数据库设计的标准范式之一,通过将数据分解为多个关联的表格,每个表格只包含一个实体或实体集合,并且每个表格中的数据不会存在冗余和重复。3NF的设计能够保证数据的一致性、稳定性和完整性,同时也有利于数据的维护和扩展。
反范式设计(Denormalization)则是一种优化技术,通过在关系数据库中增加冗余数据和重复字段,来提高查询性能和减少数据访问时间。反范式设计常用于大数据量和高并发的场景,但同时也会增加数据冗余和更新操作的复杂度,需要谨慎使用。
字符编码?
字符编码(Character Encoding)是计算机中用于表示字符集合的方法,常见的字符编码包括ASCII、Unicode、UTF-8、GBK等。字符编码规定了字符和数字之间的对应关系,以及如何将字符编码转换为二进制数据进行存储和传输。
比如英文字符 A 等价于 十进制数字65,a 等价于数字97.
多条件的逻辑以及运算符?
多条件的逻辑和运算符在数据库中常用于查询数据的筛选和过滤,包括AND、OR、NOT等逻辑运算符,以及<、>、=、<>、<=、>=等比较运算符。多个条件之间可以组合使用,以达到更精确的数据筛选和过滤效果。
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦