0
目前,我有一个系统,以保持主数据检查第二栏复制
1)电子邮件
2)所有者(USER_ID)
每当有人上传,我需要做确信它不存在于系统中。当我越来越多地上传时,捕获的时间越来越长,检查重复所花费的时间将会急剧增长,就像所示的图表一样。
问题
1)如何有效检查重复?
2)我索引的user_id和电子邮件应该我全文吗?我不会阅读文本,但会作为一个整体来搜索它,所以索引更合乎逻辑?
3)我还读了关于创建哈希组合电子邮件&所有者id然后索引哈希。这与目前的方法有什么不同?
4)我想到的最后一个方法是为email和user_id创建一个主键,再一次idk如何演出。
请指教。
代码
$exist = DB::table('contact')->where('email', $row['email'])->where('user_id', $user_id)->count();
if($exist < 1){
DB::table('contact')->insert(
['email' => $row['email'], 'name' => $row['name'], 'user_id' => $user_id]
);
}
使用INSERT IGNORE,以防INSERT失败时LAST_INSERT_ID将为0,AFAIK。在 – Mihai
这两列上添加unqiue索引,以显示您的数据库模式和您的查询!? – Alex
@Alex,使用laravel不是原始查询。所以基本上,如上所述检查两列(两个Wheres),如果您有任何支持使用它的理论,我也可以使用Raw查询(如果Laravel需要)。 – CodeGuru