sql-server-2008 - SQL Server 2008-存储和搜索URL(网址)

标签 sql-server-2008 url search sql-like

我正在决定如何在表中存储URL(书签)。我有以下要求:

客户必须能够搜索书签的标题。

我决定使用带有排名选项的FTS来满足此要求

客户必须能够搜索地址

在这里,我对如何存储URL有疑问。首先,URL在我的表中必须是唯一的。这可能是一个很大的表。此表上不会有任何更新或删除。我想到的是

ID [int] IDENTITY(1,1) -- identity and foreign key in other table(s)
Title [nvarchar](500) -- title (FTS)
CompleteURL [nvarchar](300), -- Unique index example: http://www.bbc.co.uk
URLPrefix [nvarchar](20), -- example: http://www
URLSufix [nvarchar](280), -- example: bbc.co.uk/something (index)

我意识到我有数据重复,但我对此没有任何问题,因为这里数据的完整性并不重要(没有更新或删除),并且性能很重要。我当时想在插入过程中使用 CompleteURL 作为我的 IFt存在列。我不确定这种方法是否会比 URLPrefix和URLSufix 上的复合键提供更好的性能,并完全失去 CompleteURL

URLSufix 将提供对搜索参数 LIKE'bbc%'的快速查找。

但是,如果客户搜索 LIKE'www.bbc%'怎么办?字符串开头(%bbc%)上的任何通配符都是不可能的,因为我无法负担对整个表的扫描。

此外,我决定将URL移到另一个表中的长度大于(300),因为那里99.9%的URL的长度不那么长,并且我不想达到900字节的索引限制。
这是一个好习惯吗?

编辑:

使长话短说。您将如何存储此书签
BBC Homepage title
http://www.bbc.co.uk/

如果您希望在搜索参数为3种情况之一时返回它:
1. 'homepage'
2. 'bbc.co'
3. 'www.bbc.co'

最佳答案

1)如果您使用的是SQL Server 2005(或SQL Server 2008/2008 R2),则可以在URL列上配置全文本搜索功能,因此可以避免整体上使用LIKE运算符(事件%bbc%将现在的时间要少得多)。

现在,如果您已对标题和完整的URL配置了全文搜索,则可以使用SQL的contains子句来搜索所需的内容。

关于sql-server-2008 - SQL Server 2008-存储和搜索URL(网址),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3643646/

相关文章:

sql - 如何保存存储过程?

sql server 2008数据透视表

javascript - 从地址栏隐藏 URL

R 高效查找 DataFrame 列中的值

python - 使用 Python 搜索 Outlook 收件箱

api - 如何将搜索结果与数据库集成

c# - 使用 C# 以编程方式同步两个数据库

java - java中无法下载特定的URL

url - 为什么 azure 的 CloudBlockBlob.Uri.AbsoluteUri 返回 HTTPS : for the blobls url?

sql查询用特定单词分割一行