clickhouse默认使用hash join,即将join右边的小表数据加载到内存的hash表中供左表关联。(因为默认的hash join对于将右侧表的行插入哈希表而言并不是线程安全的。因此,哈希表的填充阶段在单个线程中运行,如果右表数据较大,填充阶段耗时较大。)
select * from user_center.user_info a
join tutor.test01 b
on a.id=b.userId
select * from tutor.test01 a
join user_center.user_info b
on a.userId=b.id
SELECT
query,
formatReadableTimeDelta(query_duration_ms / 1000) AS query_duration,
formatReadableSize(memory_usage) AS memory_usage,
formatReadableQuantity(read_rows) AS read_rows,
formatReadableSize(read_bytes) AS read_data
FROM system.query_log
WHERE (type = 'QueryFinish') AND hasAll(tables, ['user_center.user_info', 'tutor.test01'])
ORDER BY initial_query_start_time DESC
LIMIT 5
FORMAT Vertical;