我有以下问题:
我有一个feed捕捉器,每半小时捕捉不同来源的新闻。
我只插入数据库中没有URL的条目(URL用于查看记录是否已在数据库中)。
即使这样,我也会得到一些重复的条目,因为有些网站会报道同样的新闻(通常来自路透社这样的新闻来源)。我可以在插入过程中查找这些重复条目,但我认为这会使插入时间更慢。
所以,我以后可以按标题找到这些重复的条目。但我觉得这次搜索很慢。然后,我的想法是从标题生成一个数字字段,然后按这个数字搜索重复的标题。
我可以用什么样的编码(我认为是与base64相反的)来编码标题?
我觉得搜索重复的数字比搜索重复的单词快得多。是真的吗?
你对这个问题提出更好的解决办法吗?
好吧,我不想在数据库中有重复的条目,我只是不想显示给用户。像google一样,它过滤重复的结果,但如果你想的话,它会显示出来。
我希望我解释得很好。提前谢谢。

最佳答案

填充MD5和title的URL散列并在其上构建UNIQUE索引:

CREATE UNIQUE INDEX ux_mytable_title_url ON (title_hash, url_hash)

INSERT
INTO    mytable (url, title, url_hash, title_hash)
VALUES  ('url', 'title', MD5('url'), MD5('title'))

要选择likeGoogle(每个title一个结果),请使用此查询:
SELECT  *
FROM    (
        SELECT  DISTINCT title_hash
        FROM    mytable
        ) md
JOIN    mytable mo
ON      mo.url_title = md.title_hash
        AND mo.url_hash =
        (
        SELECT  url_hash
        FROM    mytable mi
        WHERE   mi.title_hash = md.title_hash
        ORDER BY
                mi.title_hash, mi.url_hash
        LIMIT 1
        )

关于mysql - 从文本/网址生成数字ID,以实现快速“选择”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1227171/

10-11 22:01
查看更多