我有用PHP构建的自定义cms。我的网站有超过2,00,000个帖子。当我发布新帖子时,发布单个帖子需要花费太多时间。
当我发布新帖子时,它正在检查整个数据库以查找数据库中是否存在该URL。如果它存在则表示错误。
我想知道,如果网址已经存在,是否有必要检查整个数据库以进行检查。
因为它在发布之前检查整个数据库,所以需要很多时间并且服务器会关闭。
答案 0 :(得分:1)
不是检查数据库以查看URL是否唯一,而是通过将新记录的ID附加到要保存的URL字符串并将网站配置为像这样工作,强制它是唯一的。例如,而不是您的URL看起来像:
mywebsite.com/post/test-post
使用类似
的内容mywebsite.com/post/test-post/100
其中100值是帖子的ID,这是唯一的主键
答案 1 :(得分:0)
如果您坚持使用从帖子的主题行生成的URL(我想这是您在这里做的,您的问题有点模糊),然后创建一个包含每个URL的哈希的表并搜索哈希。这是一个快速的二进制搜索。您需要注意哈希冲突,因此您也应该完整地存储字符串。