我有两张表,列出了从不同来源获取的网址。哪个是比较两个网址的最好和最快的方法?
我想查找常用条目并将它们放在单独的表中。
这是我在做什么:
- 找到URL的MD5哈希值,而获取它们。
- 将它们存储在一列中。
- 我以数组的形式获取一个表,通过它运行一个循环并插入md5哈希值相同的其他表中的值。
编辑:我应该去掉“http://”和“www”的网址。
我想知道的任何其他方法,这是更好,更快,使用我可以执行上述
我使用PHP + MySQL的
我有两张表,列出了从不同来源获取的网址。哪个是比较两个网址的最好和最快的方法?
我想查找常用条目并将它们放在单独的表中。
这是我在做什么:
编辑:我应该去掉“http://”和“www”的网址。
我想知道的任何其他方法,这是更好,更快,使用我可以执行上述
我使用PHP + MySQL的
用于标准化网址。 –
顺便说一句,不确定MurmurHash的PHP实现将比md5函数更快。这需要测试。无论如何,真正的速度,你可以使PHP插件。 –
我猜在PHP中实现MumurHash会很困难。还有其他更快的散列方法吗? – Jagira
试着这么做:
INSERT INTO table3 (SELECT url FROM table1, table2 WHERE table1.hash = table2.hash)
这不是一个有效的SQL语句,但是像这样的嵌套查询应该读取来自table1和table2的URL,并通过它们的hash进行匹配并将它们放入table3。
编辑: 如果您想净化您的输入网址(例如删除GET变量),我会做到这一点之前,将它们保存到tabel1和table2。我不会删除http和www,因为“https://somesite”和“http://somesite”以及“www.somesite.com”和“somesite.com”可能有不同的内容。
SELECT * FROM table1 WHERE hash IN (SELECT hash FROM table2)
您可能也想看看表连接的概念。
我有点好奇 - 谁能告诉我,为什么你会在所有的hash网址是什么?它是获得一个比较容易比较的数据类型(而不是字符串搜索)吗? –