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 如何存储在索引视图中? 的相关文章

  • 实体框架中的批量插入

    我使用批量插入插入大量记录 例如 20K 当我仅插入一个实体时 它会正常工作 但是 当我用来插入多个实体 例如一对多 时 它将仅插入父实体 而不会插入子实体 我的实体和代码 Customer cs public class Customer
  • 合并sql中的列

    我正在使用 SQL Server 2017 有一个存储过程 其中我有一个带有连接的简单选择 例如 SELECT p legacyKey AS JobNumber p Name AS JobName G Label AS DesignStat
  • 错误:不支持的 PIVOT 列类型:文本

    我正在尝试执行 PIVOT 但出现错误 我正在尝试查看哪些患者接受了多次间隔治疗 该列是文本类型 我尝试在查询中将列类型转换为 VARCHAR MAX 但仍然收到错误 这是我的代码 SELECT patientname IntervalNa
  • 当我使用可变参数而不是常量参数时,为什么我的内联表 UDF 慢得多?

    我有一个表值内联 UDF 我想过滤该 UDF 的结果以获得一个特定值 当我使用常量参数指定过滤器时 一切都很好 并且性能几乎是瞬时的 当我使用可变参数指定过滤器时 它会花费明显更大的时间块 大约是逻辑读取的 500 倍和持续时间的 20 倍
  • 让 Hibernate 和 SQL Server 与 VARCHAR 和 NVARCHAR 良好配合

    我目前正在大型数据库的某些表中启用 UTF 8 字符 这些表已经是 MS SQL 类型 NVARCHAR 此外 我还有几个使用 VARCHAR 的字段 Hibernate 与 JDBC 驱动程序的交互存在一个众所周知的问题 例如 参见在 h
  • Docker 中的 Web api 无法连接到主机上的 SQL Server,并出现登录前握手错误

    首先有一些类似的问题 但我已经尝试了我能找到的所有建议 但似乎没有任何效果 如果你能找到我没有提到的 请评论 我会尝试一下 概要是我正在尝试将 Docker 容器中的 NET Core 3 1 Web api 连接到主机上的 SQL Ser
  • Spring Batch 死锁 - 无法增加身份;嵌套异常是 com.microsoft.sqlserver.jdbc.SQLServerException

    我们正在将 Spring Batch 应用程序从 Oracle DB 迁移到 Azure SQL Server 我在尝试执行时收到以下错误两个不同的工作同时更新不同的表 但使用相同的公共 BATCH 表 引起原因 org springfra
  • 使用条件 SQL 统计每月汇总记录

    我有一张桌子 我们就叫他们桌子吧SUMMARYDATA NIP NAME DEPARTMENT STATUSIN STATUSOUT TOTALLOSTTIME A1 ARIA BB 2020 01 21 08 06 23 2020 01
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • SQL Server 2008 错误 233

    我正在使用以下 sql 脚本在 SQL Server 2008 中创建新登录名 CREATE LOGIN xyz WITH PASSWORD xyz DEFAULT DATABASE master DEFAULT LANGUAGE us e
  • 从字符串中删除某些字符

    我正在尝试删除某些字符 目前我的输出如下cityname district但我想删除cityname SELECT Ort FROM dbo tblOrtsteileGeo WHERE GKZ 06440004 Output B dinge
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • ALTER TABLE 语句与 FOREIGN KEY 约束冲突

    为什么要添加外键tblDomare表导致此错误 ALTER TABLE 语句与 FOREIGN KEY 约束 FK tblDomare PersN 5F7E2DAC 冲突 冲突发生在数据库 almu0004 表 dbo tblBana 列
  • pymssql 库中的参数绑定是否正确实现?

    我使用 pymsqsql 库从 Python 程序调用极其简单的查询 with self conn cursor as cursor cursor execute select extra id from mytable where id
  • SQL Server 中的 FIFO 查询

    我正在构建一个库存管理应用程序c with SQL server 我想做一个FIFO从我的表查询 我以可变价格购买了相同的产品 之后我卖掉了其中一些 我想根据 先进先出 进行查询BatchDate柱子 所以我想通过PurchasePrice
  • 如何从任何网站下载视频

    我只是想知道如何从任何网站下载视频的总体思路 我尝试的事情 我检查页面 在视频属性标记中看到 blob URL 将 blob URL 复制粘贴到浏览器中 但无法打开 I also look around the Developer tool
  • C# 和 SQL Server:如果字符串值为空,如何在命令参数中插入 DBNull.Value?

    我已经搜索了几个小时 但找不到解决方案 我正在将一些字符串插入 SQL 但是有时 我用来执行此操作的方法可能包含空字符串 即 因此我想在 SQL Server 中插入一个空值 首先我测试我的方法以确保我能够插入DBNull Value通过使
  • 什么会阻止 Docker 容器中运行的代码连接到单独服务器上的数据库?

    我有一个在 Ubuntu 14 04 上的 Docker 容器中运行的 NET Core 1 1 应用程序 它无法连接到在单独服务器上运行的 SQL Server 数据库 错误是 未处理的异常 System Data SqlClient S
  • SQL存储过程执行时间差异

    我在 win form 应用程序中遇到奇怪的问题 我正在调用一个存储过程 并且执行大约需要 6 秒 此存储过程接受多个参数 包括一个输出参数 从应用程序级别我使用 Dim dt1 DateTime Now cmd ExecuteNonQue
  • 为什么 ISNUMERIC('.') 返回 1?

    最近我在 SQL Server 中使用 ISNUMERIC 时遇到了一个问题 导致找到了这段代码 SELECT ISNUMERIC 这会返回 1 如 true 所示 难道不应该像 false 一样返回 0 吗 See Numeric 损坏了

随机推荐

  • 无法弄清楚 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 的表上创建索引视图 是