我有两个表: 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)的内容,这些数据库旨在处理如此大的表,但是将我的数据库从 PgSQL 更改为 MongoDB 对我来说是个大问题。现在我想尝试优化 PgSQL 解决方案。你有什么建议吗?我应该怎么办?