0

ランダムに選択されたメール アドレス (実際のニュースレターに関連付けられている) を postfix キューにフィードしています。Postfix は健全なキューですが、もう少し賢くしたいと思っています。

メールアドレスをランダムではなく、可能な限り最大の分散で選択するMySQLクエリを見つけようとしています。単一のクエリでそのようなことを行うことは可能ですか? または、さまざまなプロバイダーを数えてから、結果をスライスしてアドレスを再度選択する必要がありますか? 後者はばかげているように思えますが、最初のアプローチの方が優れています。

検索クエリが悪いだけかもしれませんが、同様の問題/解決策が見つかりません。

前もって感謝します、

ファブリック

4

2 に答える 2

0

私はこのように行きます:あなたのDBテーブルを変更し、例えばと呼ばれる別の列を追加しますemail_provider。ニュースレターへの登録中にPHPを使用して、電子メールアドレスの登録から電子メールプロバイダーを抽出し、この列に保存して、値を次のようにすることができyahoo.comますgmail.com

また、データの一貫性を維持するために、テーブルを1行ずつウォークし、この列を電子メールアドレスの値で更新するスクリプトを作成する必要があります。

これを達成するのは難しいことではありません...

group by email_provider次に、あなたがいる場所でクエリを呼び出し、order by rand()グループ化されたプロバイダーごとに1つの電子メールアドレスのみを選択します...

そして、あなたは行われるべきです...

于 2012-06-26T13:55:44.950 に答える
0

わかりました、問題を少し見落としたのは私のせいでした。

疑似クエリ:

SELECT `subscriber`.`id`, `subscriber`.`email`, `queue`.`subscriber`, 
SUBSTRING(`email`, LOCATE('@', `email`)) AS `domain`,
COUNT(*) AS `count`
FROM `queue`
LEFT JOIN `subscriber` ON `queue`.`subscriber` = `subscriber`.`id`
GROUP BY `domain`
ORDER BY RAND()
LIMIT 0, 100;

そしてほら、分散型電子メール プロバイダーです。

于 2012-06-26T14:13:47.647 に答える