クライアントは、さまざまなソースから顧客のために一連のデータをコンパイルしたいと考えています。私は PHP/MySQL サーバー アーキテクチャ上に構築しています。私の経験はすべてフロントエンドの開発と設計にあるため、多くのデータ セットが存在する現在、パフォーマンスの問題に直面しています。
パフォーマンスの問題は重複除外です。メインの db テーブルにはドメインが格納され、「id」、「domain_name」、およびドメインが顧客のターゲットになる可能性があるかどうかを判断するために使用される 2 つのブール値の 4 つの列があります。「domain_name」列に INDEX があります。
同じドメインに複数の行は必要ありません。ドメインは 30,000 のセットで到着し、現在使用しているものは次のとおりです。
if(!(Domain::find_by_domain($d->n))) {
// insert into db
}
私も試しました:
$already_in_db = Domain::list_domains();
if(!in_array($already_in_db)) {
// insert into db
}
現在、テーブルには約 170,000 のドメインしかなく、どちらの方法もすでに非常に長い時間がかかります。
1) ドメイン列に UNIQUE INDEX を設定すると、複製が破棄されますか?
2) このプロセスをスピードアップする他の方法はありますか?