繁体   English   中英

SQL Server 在一个表中打包多个位字段

SQL Server packing multiple bit fields in a table

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我使用的是 SQL Server 2016,但我认为这个问题应该适用于所有版本的 SQL Server ...

我知道如果表中有多个位字段,这些字段会被打包在一起以节省空间。 即使位字段不连续出现,SQL Server 也会打包它们吗?:-

create table test (
    field1 int,
    field2 bit,
    field3 varchar(100),
    field4 bit,
    field5 varchar(100),
    field6 bit
)

或者我是否需要将所有位字段放在一起,如下所示:-

create table test (
    field1 int,
    field3 varchar(100),
    field5 varchar(100),
    field2 bit,
    field4 bit,
    field6 bit
)
1 个回复

TL; 博士; 无论位域的定义顺序如何,SQL Server 都会对其进行打包。

如果我们要运行以下

create table test_dispersed (
    field1 int,
    field2 bit,
    field3 varchar(100),
    field4 bit,
    field5 varchar(100),
    field6 bit
)

create table test_contiguous (
    field1 int,
    field3 varchar(100),
    field5 varchar(100),
    field2 bit,
    field4 bit,
    field6 bit
)

insert into test_dispersed (field1, field2, field3, field4, field5, field6) values (123,0,'A string',1,'Another string',0);
insert into test_contiguous (field1, field2, field3, field4, field5, field6) values (123,0,'A string',1,'Another string',0);


SELECT * FROM sys.dm_db_index_physical_stats (DB_ID(N'YourDbName'), OBJECT_ID(N'[dbo].[test_dispersed]'), NULL, NULL , 'DETAILED')
SELECT * FROM sys.dm_db_index_physical_stats (DB_ID(N'YourDbName'), OBJECT_ID(N'[dbo].[test_contiguous]'), NULL, NULL , 'DETAILED')

您将看到两个表的[max_record_size_in_bytes, min_record_size_in_bytes, avg_record_size_in_bytes]在 54 字节的表中都相同且相等。

1 SQL-其中一个表中没有其他表(多个字段)

我有下表 它们的关系如下:modulos包含所有模块,而mods_alunos仅包含每个学生制作的模块(nInterno标识该学生) 该查询提供了缺少的模块,但未将学生考虑在内 我正在寻找一个列出某个学生缺少的模块的查询 编辑1-样本数据 模数 mo ...

2017-06-02 09:57:55 3 36   mysql/ sql
2 通过sql-server中的sql查询删除多个表的数据

我有一个主桌Staff 。 我还有其他表,例如staffStudy , StaffPenison , visitInfo等。我在这些表之间没有任何关系。 我想知道,如果我删除人员表,那么是否可以从其他表中删除该人员的所有信息? Staff_id用于表示特定人员的信息。 任何帮助表示赞赏。 ...

3 使用一个表中的多个字段更新SQL语句

我试图只为一个表中的许多列编写一条更新SQL语句。 例如产品表。 在产品表中,有很多列,例如名称,描述,价格,数量,图像,类别,状态。 因此,我得出了以下SQL语句: 但是,编译器告诉我,有未封闭的字符文字,而不是语句。 我不知道应该如何解决此SQL语句,因为我只有一个表要更 ...

4 SQL对另一个表中的多个字段进行计数

我想计算表B idA_1-3字段中存在的表A idA数,并在输出中将0替换为null。 所需的输出: 仅计算cA_1的查询如下所示,但我未能对其进行修改以包含更多列: IIF也有一个选项,但是工作太慢: ...

5 SQL-尝试将表中的数据移动一个位置

在手动将数据输入到SQL数据库中时,我不小心开始输入错误的行。 在这个特定的表格中,我有一个ID列,其增量为1,2,3 ...,所以我觉得这可能是一个简单的修复。 我的表名为Sources。 具有时髦数据的列是SenderID,而我的递增ID列仅称为ID 如何将位于ID = Z的 ...

2014-07-30 12:50:58 1 186   mysql/ sql
6 在更新多个表时在sql-server中批量插入

我有一张桌子,有像 我想将此表中的所有记录插入具有结构的两个单独的表中 和 我可以使用代码轻松地做到这一点,但我想使用纯SQL。 通常我可以像这样插入 但是在这种情况下,每行之后都有多个插入。 在这方面的任何想法都是可取的。 ...

8 从VB多个位置更新SQL表

我试图从VBA更新SQL表(使用以下代码),但似乎无法正确显示。 我想根据A,B,C,D,E的搜索条件来更新第一,第二,第三和第四列。在这里我怎么了? 没有给出错误,但表只是不更新​​? 谢谢 Sub UpdateData(A As String, B As String, C As S ...

9 在Sql中具有多个字段的联接表中,一个字段需要求和

我有两个表: 表GL 表AP 我需要能够将“代码”列添加到GL表中,但是需要首先汇总金额。 有谁知道如何做到这一点? 谢谢 我已经从汤姆·英格拉姆(Tom Ingram)的答案中尝试过, 但是我在关键字“ group”附近收到“语法错误。”有人可以发现问题 ...

2012-07-03 19:26:29 2 103   sql
10 SSIS 将多个表从 ms Access 打包到 SQL 上的多个表

我有一个访问文件 mdb,其中包含 3 个表名称“table1、table 2 和 table3”。 在 SQL Server 上,我上面有 3 个表和相同的名称,以及两个相同的字段名称和类型。 我可以创建 ssis 数据包以将数据从 mdb 中的每个表导入 sql。 我的目标是创建一个数据包,将所 ...

2020-03-18 16:19:21 0 17   ssis
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM