我在 PostgreSQL 中有两个表:urls(带有索引页面的表,主机是索引列,3000 万行)主机(带有主机信息的表,主机是索引列,100 万行)
我的应用程序中最常见的 SELECT 之一是:
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。如果我在从 urls 表中选择数据时不必检查主机表,那么一切都会很容易。我听说 MongoDB 不支持连接,所以我的问题是如何解决上述问题?我可以将有关主机的信息放在 urls 集合中,但是字段 hosts.is_spam 可以由用户更新,我必须更新整个 urls 集合。我不知道这是正确的解决方案。
我会很感激任何建议。