我想知道以下主题(关于 Mysql 上的 INSERT - InnoDB 表)。
我有一个系统可以做其他系统 2 的事情
- 向用户宣传时事通讯
- 向特定类型的用户群发电子邮件
现在,用户将增长到 4k,预计会增长到 40k
当我大量发送电子邮件时,我在 WHILE 中为每个用户ID执行 INSERT (循环遍历所有用户)。
我有 2 个问题:
- 这是最好的方法吗?
- 当用户达到 40K(40.000 个用户)时,mysql-server 会支持这个吗?
谢谢,
这是我正在使用的一段代码
$query_write_mass = "SELECT id FROM mya_users ORDER by artist_real_address ASC";
$result_write_mass = $db->prepare($query_write_mass);
$result_write_mass->execute();
while ( list($receiver_id) = $result_write_mass->fetch(PDO::FETCH_BOTH) ) {
$stmt = $db->prepare
("INSERT INTO inbox(folder_id, sender_id, sender_type, receiver_id,
receiver_type, title, message_body, time, date, flag, spam)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bindValue(1, 0, PDO::PARAM_INT);
$stmt->bindValue(2, 0, PDO::PARAM_INT);
$stmt->bindValue(3, 'x', PDO::PARAM_STR);
$stmt->bindValue(4, $receiver_id, PDO::PARAM_INT);
$stmt->bindValue(5, $receiver_type, PDO::PARAM_STR);
$stmt->bindValue(6, $_POST['title'], PDO::PARAM_STR);
$stmt->bindValue(7, $_POST['body'], PDO::PARAM_STR);
$stmt->bindValue(8, date("G:i:s"), PDO::PARAM_STR);
$stmt->bindValue(9, date("Y-m-d"), PDO::PARAM_STR);
$stmt->bindValue(10, 'n', PDO::PARAM_STR);
$stmt->bindValue(11, '', PDO::PARAM_STR);
$stmt->execute();
}
这是用于我的内部电子邮件系统的群发电子邮件。
更新
您可以在我的另一篇文章(已解决)中找到这个问题的一个很好的答案@