- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个表来插入我的应用程序的所有文档。这是一个简单的表(我们称之为 DOC_DATA),它有 3 个字段:DOC_ID、FileSize、Data。数据是 varbinary(max)。
然后我有许多表(CUSTOMERS_DOCUMENTS、EMPLOYEES_DOCUMENTS 等),其中包含其他数据(如“文档描述”、“创建者”、“客户 ID”...)。我的情况不完全是这样,反正通过写这个例子我可以更好地表达自己。所有这些表都有 DOC_DATA.DOC_ID 的外键。
当用户搜索客户文档时,他将运行与此类似的查询:
select CD.*, DD.FileSize
from DOC_DATA DD
join CUSTOMERS_DOCUMENTS CD ON CD.DOC_ID = DD.DOC_ID
我的问题是:这个查询的性能会不会很差,因为我们也在从一个可能很大的表(DOC_DATA 表可以包含很多 GB 的数据)中读取一个字段,或者这不是问题?
替代解决方案是将 FIleSize 字段放在所有主表(CUSTOMER_DOCUMENTS、EMPLOYEES_DOCUMENTS,...)中。当然加入对性能有一点影响,现在我不是问一般的加入或不加入,而是加入或不加入一个巨大的表,而我对巨大的字段不感兴趣。
请注意:我不是在设计一个新系统,我是在维护一个遗留系统,所以在这里我不是在讨论一般来说哪个是最好的设计,而是在这种情况下哪个是最好的选择。
最佳答案
我看不出为什么您的查询性能会因为这些大列的存在而受到影响。当您读取该数据时会出现性能问题——具体来说,当您需要数据库引擎返回文档,但您(当然)没有在查询中这样做时。
在内部,对于各种 yada(max) 数据类型,SQL 在行中存储一个 16 字节左右的指针(或引用标记、转发记录或其他任何名称),而实际数据存储在一个单独的页面集。因此,如果您没有阅读该专栏,则不需要访问这些页面,并且您不会招致磁盘 I/O 命中。
关于sql-server - 在包含 varbinary(max) 数据的表中查询非 varbinary(max) 字段是否存在性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2911677/
我创建了一个表来插入我的应用程序的所有文档。这是一个简单的表(我们称之为 DOC_DATA),它有 3 个字段:DOC_ID、FileSize、Data。数据是 varbinary(max)。 然后我
我有一个数据库,该数据库被设置为对 varbinary(max) 字段上的音频文件使用 blob FileStream。它的大小已经增长到 80GB 以上,我面临着性能问题。 环顾四周后,我发现我的平
在 SQL Server 2008 中从 varbinary(MAX) 字段(不使用 FileStreams)读取部分二进制数据的最有效方法是什么? 将数据写入列时,T-SQL 中可以使用 VarBi
我正在尝试将存储在 CONTEXT_INFO 中的 nvarchar 转换回。 declare @LanguageCode nvarchar(6) = 'en'; declare @binvar va
我正在尝试转换回存储在 CONTEXT_INFO 中的 nvarchar。 declare @LanguageCode nvarchar(6) = 'en'; declare @binvar varb
我有一张像: create table tbl ( id int, data image ) 发现栏目data尺寸非常小,可以存储在varbinary(200) 所以新表将是, create
我在 SQL 中有一个 varbinary 列,我希望该列始终是唯一的。但是,我看到 SQL 不允许在 varbinary 列上创建唯一约束。 是否有任何解决方法来确保这种唯一性?也许通过使用其他类型
有人请解释为什么选择 len(0x0a000b) 返回 3? len 计算字节数吗?为什么 select left(0x0a000b, 1) 什么都不返回?我期望 0x0a(如果 len 计算字节).
我将图像存储在数据库中的 varbinary(max) 字段中。 我正在尝试在我的表单上显示图片。我尝试了很多不同的方法,但没有显示出来。 这是我的代码: //I am adding an image
我们面临一个非常奇怪的问题。 当表列如下时,我们的 mssql 2008 R2 数据库中有一张表: 用户 ID - int 用户名 - varbinary(256) 用户类型 - int 并且 use
我正在尝试将 MSSQL 数据库移植到 MariaDB,并且遇到了使用 varbinary(max) 创建表的情况: `definition` VARBINARY(max) NULL DEFA
如何在 varbinary 中获取特定范围的字节数据? 例如长度 varbinary数据是 128,我只想得到 15-19 个字节。 最佳答案 SELECT SUBSTRING(VarbinaryCo
我正在使用以下命令将 .jpg 插入到 SQL Server 2012 中的 varbinary(max) 列中: INSERT INTO Employees VALUES(5, (SELECT *
基本上,我试图给用户一个特定的密码,以便我可以在系统上测试某些功能,因为我只有我们的管理员帐户,我不能玩,我只是选择一个随机帐户,以便我可以进行测试。所以这是我的更新尝试: UPDATE dbo.Lo
使用 SQL 2005 我有一个包含 5 列的表格 ID - int Param - smallint Data1 - image Data2 - image Data3 - image 图像大小可以
我想升级表中的所有列,我的目标是从要更新的行中检索一列然后更新它,例如: update works set encrpyted_item_no = (CAST(RTrim(( select u
我有一些 varbinary 数据存储在 MS Sql Server 2005 的表中。是否有人有将查询作为输入的 SQL 代码(假设查询保证返回单列 varbinary)并将字节输出到磁盘(每行一个
这个问题已经有答案了: Convert integer to hex and hex to integer (16 个回答) 已关闭10 年前。 这几乎是一个菜鸟问题,但我找不到解决方案。 我正在使用
我们使用 varchar(255) 在 mysql 中存储“关键字”。我们面临一个问题,即 mysql 会忽略“=”中用于比较目的的所有尾随空格。它确实尊重“like”比较中的尾随空格,但它不允许我们
我设法将 Image 转换为 varbinary 并将其存储在我的数据库中。我一直在尝试将 varbinary 转换为图像,但我在这里遇到了一些麻烦。 首先,我从服务中的数据库中获取二进制文件。
我是一名优秀的程序员,十分优秀!