今天总结下大厂面试十大真题,并附有详细解答,供大家学习,文末有额外大礼包资料及内推哦。
上正文。
问题一:数据库中两张表join连接查询的时候,索引是怎么走的呢?这个连接查询的底层过程是怎么进行的呢?一般说是两表连接时连接的字段要加上索引,效率会高,请问这是基于什么原理呢?关联查询时,“小表驱动大表”怎么理解?
首先连接查询会有一个表作为驱动表,一个表是被驱动表。
驱动表可以理解为正常的单表查询,所以效率主要就是看,怎么根据驱动表的查询数据,去查被驱动表的数据。如果说关联字段没有索引,那查被驱动表的时候,就相当于全表扫描了,效率肯定低。
为什么是“小表驱动大表”?
有两个变量会影响查询效率,一是“单次查询被驱动表的效率”,而是“查询被驱动表的次数”。
这里分两种情况,第一种是"关联字段有索引",第二种是“关联字段没有索引”
关联字段有索引
这种情况,通过索引查询被驱动表时大表和小表,对于单词查询被驱动表的效率不会相差很多。 所以就看被驱动表的查询次数了。查询次数其实就是取决于驱动表的查询结果,驱动表的结果,是被驱动表的查询条件,所以驱动表查询结果越小,查询次数就越少了。所以小表驱动大表效率会更高。
注意:小表指的是驱动表查询结果少。而不是说驱动表的表容量小。注意下这里的误区。
join查询的是一张表一张表的按顺序来查询的。
关联字段没有索引
m