mysql - 优化两个表之间重复 n-uplets 的搜索
问题描述
我想计算两个表之间的重复 n-uplets(无关联)。
假设我们有两个表:
表 A:(名、姓、电子邮件...)
N-uplets:
TOTO/ TOTO/ TOTO@test.com ...
TITI/ TITI/ TITI@test.com ...
表 B:(名、姓、电子邮件...)
N-uplets:
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 中有 10k n-uplets,在表 B 中有 40k。执行速度很慢:/
有什么优化它的想法吗?
提前致谢 :)
解决方案
你需要一些索引。既然你有一个OR
条件,我会创建两个索引:
create index ix1 on tableb (lastname, firstname);
create index ix2 on tableb (email);
这种OR
情况需要两次扫描。
推荐阅读
- reactjs - React Hooks with Styled Components - 表单不起作用
- python - 将python中的数据格式转换为ascii
- sql - 从逗号分隔的 GUID 中提取逗号分隔的值
- python - Python selenium 无法将日期输入到困难的日历字段中
- python - 多列上的python类别编码器
- android-studio - 您好,我正在使用带有 mapBox 的 android studio,但找不到 LocationLayerPlugin
- encryption - 为所有应用程序生成/保留静态 AES 密钥
- swift - 是否可以从 SwiftUI 中的模板/结构/类生成样板表单数据输入视图
- javascript - 我无法在反应中获取图像文件夹中的图像
- python - 如何在 matplotlib 中绘制图形坐标?