在新帖子中检查整个数据库

时间:2014-09-15 17:57:57

标签: php database

我有用PHP构建的自定义cms。我的网站有超过2,00,000个帖子。当我发布新帖子时,发布单个帖子需要花费太多时间。

当我发布新帖子时,它正在检查整个数据库以查找数据库中是否存在该URL。如果它存在则表示错误。

我想知道,如果网址已经存在,是否有必要检查整个数据库以进行检查。

因为它在发布之前检查整个数据库,所以需要很多时间并且服务器会关闭。

2 个答案:

答案 0 :(得分:1)

不是检查数据库以查看URL是否唯一,而是通过将新记录的ID附加到要保存的URL字符串并将网站配置为像这样工作,强制它是唯一的。例如,而不是您的URL看起来像:

mywebsite.com/post/test-post

使用类似

的内容
mywebsite.com/post/test-post/100

其中100值是帖子的ID,这是唯一的主键

答案 1 :(得分:0)

如果您坚持使用从帖子的主题行生成的URL(我想这是您在这里做的,您的问题有点模糊),然后创建一个包含每个URL的哈希的表并搜索哈希。这是一个快速的二进制搜索。您需要注意哈希冲突,因此您也应该完整地存储字符串。