首先原谅我,我不是DBA,我们公司真的没有DBA。我是一名开发人员,谷歌搜索答案已经无济于事了。提前致谢。
我的问题是关于我们数据库的最佳结构。我们有一个网站,允许用户轻松搜索和查找 PDF。大多数情况下它只是元数据搜索,但我们确实允许全文搜索(所有单词、任何单词、精确短语)。
大约有 300 万个 PDF(每天增加),大小约为 2.3 TB。这些使用 VARBINARY(MAX) 存储在对应日期的表中(File1980、File1990、File2000 等)。我们没有把它做成一个单一的表,因为我们的系统管理员在备份方面遇到了麻烦。每个文件表(File1990 等)都有自己的 MDF 文件。
我们的网站使用 Microsoft 动态数据和实体框架。我们使用下面与 LINQ 查询的其余部分连接的表值函数之一在 PDF 中进行搜索。
ALTER FUNCTION [dbo].[udf_ContainsSearch] (@keywords nvarchar(4000))
RETURNS @containsTable TABLE
(
[key] [uniqueidentifier] NOT NULL, --PRIMARY KEY NONCLUSTERED,
[rank] [int] NOT NULL
PRIMARY KEY NONCLUSTERED ([key], [rank])
)
AS
BEGIN
insert into @containsTable
select [key],[rank] from ContainsTable(File2010,Content,@keywords)
union
select [key],[rank] from ContainsTable(File2000,Content,@keywords)
union
select [key],[rank] from ContainsTable(File1990,Content,@keywords)
union
select [key],[rank] from ContainsTable(File1980,Content,@keywords)
union
select [key],[rank] from ContainsTable(File1970,Content,@keywords)
RETURN
END
ALTER …
Run Code Online (Sandbox Code Playgroud) sql-server ×1