BLOB 如何存储在索引视图中?

2024-02-10

问题

假设我在包含以下内容的表上创建索引视图varbinary(max)列,二进制内容是否会被物理复制到索引视图的 B 树中,或者原始字段是否会以某种方式“引用”,而无需物理复制其内容?

换句话说,如果我在包含 BLOB 的表上创建索引视图,是否会重复 BLOB 所需的存储?

更多细节

当对二进制数据使用全文索引时,例如varbinary(max),我们需要一个额外的“过滤器类型”列来指定如何从该二进制数据中提取文本,以便可以对其进行索引,如下所示:

CREATE FULLTEXT INDEX ON <table or indexed view> (
    <data column> TYPE COLUMN <type column>
)
...

在我的特定情况下,这些字段位于不同的表中,我尝试使用索引视图将它们连接在一起,以便它们可以在全文索引中使用。

当然,我可以将类型字段复制到 BLOB 表中并手动维护它(使其与原始表保持同步),但我想知道是否可以让 DBMS 自动为我做这件事,这会更好unless存储方面要付出高昂的代价。

此外,将这两个表合并为一个表本身会产生负面后果,这里不做太多详细介绍......


这会重复 BLOB 所需的存储空间吗?

是的。索引视图将有自己的副本。

你可以从

CREATE TABLE dbo.T1
  (
     ID   INT IDENTITY PRIMARY KEY,
     Blob VARBINARY(MAX)
  );

DECLARE @vb VARBINARY(MAX) = CAST(REPLICATE(CAST('ABC' AS VARCHAR(MAX)), 1000000) AS VARBINARY(MAX));

INSERT INTO dbo.T1
VALUES      (@vb),
            (@vb),
            (@vb);

GO

CREATE VIEW dbo.V1
WITH SCHEMABINDING
AS
  SELECT ID,
         Blob
  FROM   dbo.T1

GO

CREATE UNIQUE CLUSTERED INDEX IX
  ON dbo.V1(ID)

SELECT o.NAME       AS object_name,
       p.index_id,
       au.type_desc AS allocation_type,
       au.data_pages,
       partition_number,
       au.total_pages,
       au.used_pages
FROM   sys.allocation_units AS au
       JOIN sys.partitions AS p
         ON au.container_id = p.partition_id
       JOIN sys.objects AS o
         ON p.object_id = o.object_id
WHERE  o.object_id IN ( OBJECT_ID('dbo.V1'), OBJECT_ID('dbo.T1') ) 

哪个返回

+-------------+----------+-----------------+------------+------------------+-------------+------------+
| object_name | index_id | allocation_type | data_pages | partition_number | total_pages | used_pages |
+-------------+----------+-----------------+------------+------------------+-------------+------------+
| T1          |        1 | IN_ROW_DATA     |          1 |                1 |           2 |          2 |
| T1          |        1 | LOB_DATA        |          0 |                1 |        1129 |       1124 |
| V1          |        1 | IN_ROW_DATA     |          1 |                1 |           2 |          2 |
| V1          |        1 | LOB_DATA        |          0 |                1 |        1129 |       1124 |
+-------------+----------+-----------------+------------+------------------+-------------+------------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BLOB 如何存储在索引视图中? 的相关文章

随机推荐

  • 无法弄清楚 python selenium webdriver move_to_element 功能

    我查看了许多示例以及 ActionChains 的源代码 似乎正在使用其他示例中建议的代码来实现悬停功能 但我仍然无法克服这个异常 代码如下 menu browser find element by xpath nav ul li a hr
  • 如何从 System.Drawing.Imaging.ImageFormat 获取 contentType

    如果我有 Bitmap 并且它有 RawFormat 属性 如何从此 ImageFormat 对象获取内容类型 Bitmap image new Bitmap stream ImageFormat imageFormat image Raw
  • 如何创建间距均匀的虚线圆?

    我想用 CSS 制作一个虚线圆圈 并通过以下过程创建它 虽然这个过程可以显示虚线圆圈 虚线末端和起点之间的间隙变窄 并且间隙不均匀 c width 500px height 500px border width 15px border st
  • 在XMPP IOS框架(XMPPFramework)中启用BOSH服务以创建基于聊天的应用程序

    我已经实现了基于聊天的应用程序 我可以用它来做很多功能https github com robbiehanson XMPPFramework https github com robbiehanson XMPPFramework图书馆 这是
  • 从html dom元素获取图像源

    我正在使用查询图像getElementsByTagName img 并使用打印它image gt src 这是行不通的 我也尝试使用image gt nodeValue这不起作用 require simple html dom php do
  • python 相当于 R 的 qnorm、qf 和 qchi2

    我需要 python 中某些分布的分位数 在 r 中 可以使用 qf qnorm 和 qchi2 函数来计算这些值 python 中是否有这些 R 函数的等价物 我一直在寻找 scipy 但我没有找到任何东西 相当于Rpnorm 函数是 s
  • 如何在不禁用的情况下禁用用户触摸 UIbarbutton?

    我的工具栏中有一个 UiBarButton 项目 我需要停用用户触摸交互 UiBarButton 没有设置用户交互启用其财产 当我隐藏它时 没有适当的可见性 有人可以告诉我如何在不禁用 UIbarbutton 的情况下禁用它的用户触摸交互吗
  • 尝试在Python中制作JSON Schema验证器来设置默认值

    我正在使用稍微修改过的代码版本JSON 架构常见问题解答 http python jsonschema readthedocs io en latest faq why doesn t my schema that has a defaul
  • Datalog、CLIPS、Prolog

    和很多程序员一样 我在大学里学过 Prolog 但只学了很少的部分 我理解Prolog和Datalog密切相关 但是Datalog更简单 另外 我相信我读到 Datalog 不依赖于逻辑子句的顺序 但我不确定为什么这是优点 CLIPS 据说
  • 使用 VBA 在 PowerPoint 中设置对象的位置

    我使用以下 VBA 行来设置刚刚粘贴到 PowerPoint 中的 Excel 选区的大小 位置 Set Shp PPApp ActivePresentation Slides PPApp ActiveWindow Selection Sl
  • 返回空列表而不是 null

    我想更改当前函数以返回空 JSON 列表 当前它返回nil 这是我当前的代码 func s Service projectsGet c gin Context var projects models Project user getUser
  • 沿轴对张量进行火炬求和

    如何对张量的列求和 torch Size 10 100 gt torch Size 10 最简单和最好的解决方案是使用torch sum 对张量的所有元素求和 torch sum x gives back a scalar 对所有行 即每列
  • 使用 pyparsing 解析嵌套结构

    我正在尝试解析生物序列中位置的特定语法 职位可以采用以下形式 12 a simple position in the sequence 12 34 a complex position as a base 12 and offset 34
  • 递归 SQL 将 CSV 拆分为表行

    在解决了一个不同的问题后 我偶然发现了递归 CTE 从表面上看 这似乎是解决 将 csv 拆分为表行 问题的相当简单的方法 我把这个例子放在一起 DECLARE InputString varchar 255 a b c d e f g h
  • java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.ClassLoadingException

    我使用 spring junit 测试 但在所有测试中都收到此错误消息 因为我更新了 Hibernate Search Hibernate 和 Springframework 在 pom xml 中 我包含了来自 Hibernate 的 c
  • WPF 中某些情况下上下文菜单被剪切

    上下文菜单在不同的 NET Framework 中被截断 查看 ZIP 文件中的图像 有两张截图 一张来自 XP 另一张来自 Win7 我创建了一个简单的 Visual Studio 2010 解决方案来重现我的问题 http www me
  • 在 iOS 13 中连接到 NFCTagReaderSession NFCISO7816Tag 标签并发送命令

    我正在研究 iOS 13 中新提供的 NFCTagReaderSession 我突然连接了会话标签并发送 apdu 命令进行通信 当我调用 connect 属性时 在连接时 发出蜂鸣声 它看起来需要 15 秒才能连接 它会显示一条错误消息
  • Python嵌入

    我想要一个嵌入 Python 解释器和一个小脚本的大型二进制文件 我对整个静态链接 配置和制作以及 GCC 等完全陌生 请问 有人可以向我描述构建此类可执行文件的基本步骤吗 我使用的是 MacOS 10 6 我下载了 Python 3 3
  • Tensorflow 重塑张量

    我正在尝试使用tf nn sparse softmax cross entropy with logits我已遵循用户 Olivier Moindrot 此处 1 的回答 但出现尺寸错误 我正在构建一个分割网络 因此输入图像为 200x20
  • BLOB 如何存储在索引视图中?

    问题 假设我在包含以下内容的表上创建索引视图varbinary max 列 二进制内容是否会被物理复制到索引视图的 B 树中 或者原始字段是否会以某种方式 引用 而无需物理复制其内容 换句话说 如果我在包含 BLOB 的表上创建索引视图 是