私は2つのテーブルを持っています:urls(インデックス付きページのあるテーブル、ホストはインデックス付きの列、30 mln行)hosts(ホストに関する情報のあるテーブル、ホストはインデックス付きの列、1mln行)
私のアプリケーションで最も頻繁に使用される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 ?
URLテーブルに100000行を超えるプロジェクトでは、クエリの実行が非常に遅くなります。
テーブルが大きくなったため、クエリの実行はますます遅くなります。非常に大きなテーブルを処理するように設計されたNoSQLデータベース(MongoDBなど)についてたくさん読んだことがありますが、データベースをPgSQLからMongoDBに変更することは私にとって大きな問題です。今、私はPgSQLソリューションを最適化してみたいと思います。何かアドバイスはありますか?私は何をすべきか?