Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 SQL server 2008-存储和搜索URL(网址)_Sql Server 2008_Url_Search_Sql Like - Fatal编程技术网

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

Sql server 2008 SQL server 2008-存储和搜索URL(网址),sql-server-2008,url,search,sql-like,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)

我面临一个如何在表中存储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作为我的列(如果存在)。我不确定这种方法是否能在urlpefix和URLSufix上提供比复合键更好的性能,并完全失去CompleteURL

URLSufix将提供搜索参数的快速查找,如“bbc%”

但是,如果客户搜索像“www.bbc%”这样的怎么办?字符串(%bbc%)开头的任何通配符都是不可能的,因为我无法扫描整个表

此外,我决定在另一个表中移动长度超过(300)的URL,因为超过99.9%的URL没有那么长,我不想达到900字节的索引限制。 这是一种好的做法吗

编辑:

长话短说。你如何储存这个书签

BBC Homepage title
http://www.bbc.co.uk/
如果希望在搜索参数为以下三种情况之一时返回:

1. 'homepage'
2. 'bbc.co'
3. 'www.bbc.co'
1) 如果您使用的是SQL Server 2005(或SQL Server 2008/2008 R2),则可以在URL列上配置全文搜索功能,这样就可以避免将LIKE运算符作为一个整体使用(现在事件%bbc%所需的时间会少得多)


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

看起来您不清楚用户故事。在您开始考虑设计之前,请询问您的客户独有的用例。仅供参考:后缀用两个EFF拼写。为什么不在URL上使用FTS呢?断字者无论如何都会忽略标点符号。