mysql匹配网址

时间:2011-07-05 06:57:57

标签: mysql url match

我在mysql表中插入url。例如,我插入了8个条目,如下所示:

 url
-----------------------------
http://example.com 
http://www.example.com 
http://example.com/ 
http://www.example.com/
http://example.com/sports 
http://www.example.com/sports 
http://example.com/sports/ 
http://www.example.com/sports/  

。现在我如何编写一个查询来匹配example.com,它应该返回前4个条目,因为它们是相同的url?类似地,我如何编写查询以获取最后4个条目,因为它们是相同的?即使我有大量的条目,查询应该是快速的可能吗?

1 个答案:

答案 0 :(得分:4)

好吧,如果你在一个表中有这些链接,你可以得到它们:

SELECT * FROM table WHERE url LIKE '%example.com%'

这快吗?不 - 它需要全表扫描。

如果我是你,我会建模我的数据库,将这些网址保存在2个表格中:

<强>链接

  • ID
  • * base_url * - 持有example.com

<强> related_links

  • ID
  • * link_id * - 链接上的FK
  • 子域名 - 持有www。
  • * relative_url * - 持有/ sports /

修改 - 回答评论:

您的数据库目前尚未正常化。您为“同一件事”保留了多条记录 - 您没有从DB中获益。在处理结构化数据时,DB很有用 - 您的查询需要进行字符串操作 - 这是一个非常复杂的操作。因此,尽管可能有可能返回您需要和想要的当前形式的数据库的结果,但它不会是一个微不足道的任务,并且肯定性能会很糟糕。

我的建议 - 修改数据库 - 至少将列subdomainrelative_path添加到您的表中并尽可能单独保存此信息 - 以便能够对其进行汇总查询。