哈希匹配和嵌套循环
问下大虾们,哈希匹配和嵌套循环的区别在哪里,发现在前者的基础上做表扫描的时候,明显快了很大一截,什么时候会选择前者而不是后者,求真相。。 究竟哪句是快的?分开来说看不懂呢。
[解决办法]
如果where条件一样且数据量没有太大变化,那么主要是索引影响的。但是写法也会对关联方式有影响。
[解决办法]
FlowLastStep由于是临时数据,没有索引,所以如果数据量很大的话,类似于一个没有任何索引的大表。关联的时候无法找到好的关联方式,所以使用哈希来关联。
[解决办法]
索引查找、扫描其实是指非聚集索引的行为,而非聚集索引的强项在范围查找。这样的话如果范围相对较大,它还是可能会做哈希匹配。你的EmployeeAbnormityInfor表上employeeid有没有索引?
[解决办法]
哈希匹配和嵌套循环是不同的机制,适用于不同的情况,对数据库而言,选择何种连接方式是基于开销的,数据库会根据统计信息选择开销相对较小的连接方式,除非你用了提示。
如果一定要找规律,大概 排序、索引查找后面接的多是嵌套循环
位图、表扫描、并行度后面接的多是哈希匹配
[解决办法]
主键默认会有聚集索引,如果没有,那这么它需要借助rid来找数据,称为书签查找,是其中一种最低效的查询,所以主键默认会有聚集索引。