他们的主要区别:
•流查询步骤只能进行等值查询,数据库查询步骤可以进行非等值查询
•流查询在查询之前把数据都加载到内存里,数据库查询可以选择是否把数据加载到内存。
•进行等值查询时,数据库查询步骤如果选中了全部缓存,性能接近但仍不如流查询的性能。
•进行等值查询时,数据库查询步骤如果没选中全部缓存,性能较低,每次查询都要向数据库发送一个SQL 查询请求。
•进行非等值查询时,数据库查询即使选中了全部缓存,性能也较低,没有索引在内存中通过循环查询。
•数据库查询的缓存适用于多次查询返回同一个查询结果的情况(集中式), 多次查询返回不同查询结果(分散式),使用缓存反而会降低性能。
使用场景:
•非等值查询:数据库查询
•中小数据量的等值查询:流查询
•大数据量的等值集中式查询:数据库查询(使用缓存)
•大数据量的等值分散式查询:数据库查询(不使用缓存)
Merge Join
Merge Join是高级版的流查询,也就是说可以根据不同表的主键进行内连接或者是外连接。
•流查询步骤只能进行等值查询,数据库查询步骤可以进行非等值查询
•流查询在查询之前把数据都加载到内存里,数据库查询可以选择是否把数据加载到内存。
•进行等值查询时,数据库查询步骤如果选中了全部缓存,性能接近但仍不如流查询的性能。
•进行等值查询时,数据库查询步骤如果没选中全部缓存,性能较低,每次查询都要向数据库发送一个SQL 查询请求。
•进行非等值查询时,数据库查询即使选中了全部缓存,性能也较低,没有索引在内存中通过循环查询。
•数据库查询的缓存适用于多次查询返回同一个查询结果的情况(集中式), 多次查询返回不同查询结果(分散式),使用缓存反而会降低性能。
使用场景:
•非等值查询:数据库查询
•中小数据量的等值查询:流查询
•大数据量的等值集中式查询:数据库查询(使用缓存)
•大数据量的等值分散式查询:数据库查询(不使用缓存)
Merge Join
Merge Join是高级版的流查询,也就是说可以根据不同表的主键进行内连接或者是外连接。
![](https://i-blog.csdnimg.cn/blog_migrate/fed5a89a954923cbe2fbaa41e237caed.png)