0

我有大约 50,000 个第 3 方数据源,每五分钟就会读取一次。这个想法是检查更新的内容。我有以下表格:

饲料

  • ID
  • 姓名
  • 网址

帖子

  • ID
  • feed_id
  • 标题
  • 内容
  • 网址
  • unique_hash(基于 url + 标题)

我的第一种方法是使 posts.unique_hash 成为唯一索引字段,以便在尝试 INSERT 时失败。大多数 INSERT 只会失败(如预期的那样)。但是,我的问题是我需要经常在“posts”表上运行 SELECT(对于此应用程序的另一部分),因此不断运行大量 INSERTS(许多失败)将消耗表的资源。

我当然可以在尝试插入之前在“帖子”表上执行 SELECT,但这会更加耗费资源。

我正在寻找最好的方法,它可以让我的“帖子”表的资源免费用于进行许多 SELECT 查询。使用索引表?使用缓存机制?

4

1 回答 1

0

(唯一)键可以是多个字段,因此您不需要计算哈希。您可以将唯一键设置为 feed_id、标题和 url 的组合,以防止插入重复信息。

除了将更多资源用于缓存多少索引等等之外,您无能为力,因为只需执行 INSERT 将是对服务器的最少查询。使用唯一索引只会使错误的插入失败,并消除您进行选择或其他操作以查看它是否应该插入。

你如何从帖子中进行选择可能会有很大不同 - 你必须告诉我们你想要撤回什么(select * from posts where feed_id = ?或其他东西,等等......)。根据您查询信息的方式,将确定该表上附加索引的功能性。

于 2012-04-12T00:54:38.367 回答