我有兩個mysql表,我想在它們兩個中插入一個電子郵件。在兩個表中插入行的最快方法是什麼
我需要將電子郵件分爲name
和domain name
,並將它們的每個部分插入到一個表中。
我domain
表是這樣的:
+----+--------+
| id | domain | primary(id)
+----+--------+
和我email
表:
+-------+----------+
| eMail | domainId | primary key(eMail, domainId)
+-------+----------+
即:[email protected]>example.com
在domain
表中插入和 info
有使用domainId添加email
表。
域必須是唯一的。
我嘗試:
foreach($emails as $email)
{
list($account,$hostname) = explode('@',$email,2);
$query = $dbh->prepare("SELECT id FROM domain WHERE domain LIKE :domain LIMIT 0,1");
$query->execute(array(':domain'=>trim($hostname)));
if($query->rowCount())
{
$id = $query->fetch();
$id = $id['id'];
}else{
$insert = $dbh->prepare("INSERT INTO domain (domain) VALUES (:domain)");
$insert->execute(array(':domain'=>trim($hostname)));
$id = $dbh->lastInsertId();
}
$name = $dbh->prepare("INSERT INTO email (eMail, domainId) VALUES (:eMail, :domainId)");
$name->execute(array(':eMail'=>trim($account),':domainId'=>$id));
}
但這種方式很慢,當我要添加大量電子郵件:
有沒有更快的方法也許我可以在單個查詢做到這一點..?
只能將電子郵件,並添加一個觸發器,提取域名和插入自動進'domains' –
該表,然後有一個更好的辦法。但如何添加觸發器? – Pooya
有多少封電子郵件和多少個域名?有很多來自同一個域名的電子郵件嗎? – FuzzyTree