java面试知识点总结-sql篇

   年底了,准备离职换工作了,在做面试准备时,发现自己的知识体系太零散,理论知识储备匮乏,之前也没有特别系统的去进行梳理,正好趁这次机会梳理一下知识体系,一方面为面试做准备,另一方面后续工作中设计到相关知识点时可以迅速定位到相关知识点,总结中会夹杂着面试问题或者知识点在工作中的实际应用。

 sql索引创建时,创建字段顺序对查询速度有影响吗?

   有关系,索引本身是一个排序的列表,存储这索引值和数据所在行的物理地址,当使用索引进行查询时,可以通过索引快速定位到数据所在的物理地址,索引字段的排序影响着查询速度。
索引字段创建顺序对查询效率影响的关键点:

  1. 索引的层次结构,索引通常按照字段的顺序构建成树形结构(b树,b+树),字段的创建顺序决定了树节点的分裂和排序方式;
  2. 查询优化器的决策,数据库查询优化器在选择使用哪个索引时,会考虑索引字段的顺序和查询字段;如果索引字段的顺序和查询条件不匹配,优化器可能无法充分利用索引,导致全表扫描火索引扫描的效率降低;
  3. 复合索引的使用,在复合索引(多个字段索引)中,字段的顺序尤为重要,查询条件中的字段必须按照索引的顺序出现(可以从第一个字段开始连续,也可以只使用前面的部分字段),才能有效利用索引;
  4. 查询性能的差异,不同索引字段顺序可能导致查询性能差异显著,在一定情况下,调整索引字段的顺序可以显著提高查询速度;
  5. 索引维护成本,索引字段的顺序也会影响索引的维护成本,包括插入、更新、删除操作时的索引调整。在创建索引时,应该仔细考虑字段的顺序,以确保索引能够有效地支持查询操作,通常根据查询条件中常出现的字段顺序来创建索引,并考虑字段的选择性和唯一性等因素。
  6. 索引最左前缀原则,在多列索引中,数据库通常遵循最左前缀原则,如果索引是按照字段A、B、C的顺序创建的,那边查询条件中必须首先包括字段A,才能有效索引,如果查询字段只包含B或C,或者字段A不是第一个出现的,那么数据库可能无法使用该索引; 

sql查询执行顺序

  1. from 、连接条件on 确认数据源
  2. join 对 多个表进行连接操作匹配过滤出连表数据
  3. where 对得到的数据进行过滤,只保留满足where条件的行
  4. group by 将过滤后的数据按照指定的列进行分组
  5. having 对分组后的数据进行过滤,保留满足having条件的分组,having通常与聚合函数(sum\count)一起使用
  6. select 从分组后的数据中选中指定的列,可以计算聚合函数或进行其他表达式运算
  7. distinct 对select 选取的数据进行去重操作
  8. o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值