我想计算两个表之间的重复n-uplet(不关联)。
假设我们有两个表:
TOTO / TOTO / TOTO@test.com ...
TITI / TITI / TITI@test.com ...
TOTI / TOTI / TOTO@test.com ...
TITI / TITI / TATI@test.com ...
我的请求应该从表A中获取TOTO和TITI。
$query = $this->createQueryBuilde('a');
$query
->innerJoin(B::class, 'b',
'with',
"(a.lastName = b.lastName AND a.firstname = b.firstName)
OR a.email = b.email"
)
;
此请求有效,但是我在表A中有1万个n-uplet,在表B中有40k。执行速度很慢:/
有什么优化建议吗?
预先感谢:)
答案 0 :(得分:0)
您需要一些索引。由于您有一个OR
条件,因此我将创建两个索引:
create index ix1 on tableb (lastname, firstname);
create index ix2 on tableb (email);
OR
条件需要进行两次扫描。