优化两个表之间重复n-uplet的搜索

cmssoen2  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(405)

我想计算两个表之间的重复n-uplets(没有关联)。
假设我们有两张table:

表a:(名字、姓氏、电子邮件…)

n-偶:

托托/托托/toto@test.com ...
提提/提提/titi@test.com ...

表b:(名字、姓氏、电子邮件…)

n-偶:

总计toto@test.com ...
提提/提提/tati@test.com ...
我的要求应该从a表中得到托托和提提。

$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中有10k个n-uplets,在表b中有40k个。执行缓慢:/
有什么办法优化它吗?
提前感谢:)

gijlo24d

gijlo24d1#

你需要一些索引。既然你有 OR 条件i将创建两个索引:

create index ix1 on tableb (lastname, firstname);

create index ix2 on tableb (email);

这个 OR 这种情况需要两次扫描。

相关问题