PostgreSQL には 2 つのテーブルがあります。
私のアプリケーションで最も頻繁に使用される SELECT の 1 つは、次のとおりです。
SELECT urls.*
FROM urls
JOIN hosts ON urls.host = hosts.host
WHERE urls.projects_id = ?
AND hosts.is_spam IS NULL
ORDER by urls.id DESC, LIMIT ?
urls テーブルに 100,000 を超える行があるプロジェクトでは、クエリの実行が非常に遅くなります。
テーブルが大きくなったため、クエリの実行はますます遅くなります。非常に大きなテーブルを処理するように設計された NoSQL データベース (MongoDB など) についてよく読んだことがあり、データを MongoDB に移動することを検討しています。URL テーブルからデータを選択するときにホスト テーブルをチェックする必要がなければ、すべてが簡単になります。MongoDB は結合をサポートしていないと聞いたので、上記の問題を解決するにはどうすればよいですか? ホストに関する情報を URL コレクションに入れることはできますが、フィールド hosts.is_spam はユーザーによって更新される可能性があり、URL コレクション全体を更新する必要があります。私はそれが正しい解決策であることを知りません。
アドバイスをいただければ幸いです。