小编Dum*_*per的帖子

增加小数精度突然增加了表的大小

我有一张像:

CREATE TABLE grid_rows(
    [grid_row_id] [int] NOT NULL,
    [grid_column_id] [smallint] NOT NULL,
    [decimal_val] [decimal](18, 6) NULL,
    [datetime_val] [datetime] NULL,
    [integer_val] [int] NULL,
    [string_val] [varchar](1024) NULL
)
Run Code Online (Sandbox Code Playgroud)

这张桌子有一些 1,037,560 rows

exec sp_spaceused "grid_rows" gives:
rows         reserved    data
1,037,560    461,768KB  302,648KB`
Run Code Online (Sandbox Code Playgroud)

将精度从 (18, 6) 更改为 (24,6) 后即 ALTER TABLE grid_rows ALTER COLUMN decimal_val decimal(24, 6)

exec sp_spaceused "grid_rows" gives:
rows         reserved     data
1,037,560    641,352KB  560,832KB
Run Code Online (Sandbox Code Playgroud)

根据所分配的空间decimal(18,6)就是9 bytes那的(24, 6)13 bytesMSDN参考

The reserved space has …

sql-server-2008 sql-server

7
推荐指数
1
解决办法
2332
查看次数

在关系数据库中设计键值对的最佳方法?

我有一个表,其中包含任何对象可以具有的所有属性的列表:

attr_id attr_name attr_data_type
------ ----- --------------

我有一个表[object_key],其中每个表object_key_id都有一个唯一的列表,即一组 attr_id,attr_value 对。

object_key_id attr_id attr_value
--------- ------- ----------
1 1 '值 1'
1 2 '值 2'
2 1 '值 3'
2 2 'value4'
3 1 '值 1'
3 2 '值 2'
3 3 'value3'

在这种情况下,获得object_key_id给定attr_id,attr_value对的最佳方法是什么。

Ex: Input: [{1, 'value1'}, {2, 'value2'}] Output: 1

建立唯一索引的最佳方法是什么,即object_key_id对一组attr_id,attr_value对具有唯一性?

sql-server

4
推荐指数
1
解决办法
2万
查看次数

死锁发生在删除插入场景中

<deadlock-list>
  <deadlock victim="process14012e08">
    <process-list>
      <process id="process14012e08" taskpriority="0" logused="148" 
               waitresource="PAGE: 28:1:762341" waittime="6583" 
               ownerId="54542271281" transactionname="DELETE" 
               lasttranstarted="2013-06-22T01:04:20.450" XDES="0x64de49950" 
               lockMode="S" schedulerid="26" kpid="13336" status="suspended" spid="1239" 
               sbid="0" ecid="0" priority="0" trancount="2" 
               lastbatchstarted="2013-06-22T01:00:19.120" 
               lastbatchcompleted="2013-06-22T01:00:19.117" hostpid="15675" 
               isolationlevel="read committed (2)" xactid="54542271281" currentdb="28" 
               lockTimeout="4294967295" clientoption1="671350816" clientoption2="128056">
        <executionStack>
          <frame procname="adhoc" line="3" stmtstart="134" stmtend="332" 
                 sqlhandle="0x02000000e5eb1a38144fa5c164b3c876cc2c8da059bf3bb1">
            delete from grid_col where grid_col_id not in (select grid_col_id from grid)
          </frame>
        </executionStack>
        <inputbuf>
          set rowcount 10000
          while 1 = 1
          begin delete from grid_col where grid_col_id not in (select grid_col_id from grid)
          if @@rowcount = 0
          break …
Run Code Online (Sandbox Code Playgroud)

sql-server

2
推荐指数
2
解决办法
1412
查看次数

标签 统计

sql-server ×3

sql-server-2008 ×1