SQL Server 2005:数据类型最大值(2)

来源:asp之家 时间:2009-06-04 09:55:00 

除了变量之外,MAX类型也可以用于定义表的字段:

CREATE TABLE BigStrings

(

BigString VARCHAR(MAX)

)

当用于表的时候,意识到MAX类型具有与TEXT和IMAGE类型稍微不同的行溢出行为是非常重要的。在SQL Server中,最大的行尺寸是8060字节。要超过这个限制,并且仍然管理每个都拥有高达2GB的存储,用TEXT和IMAGE类型存储的数据会被存储引擎自动地断行,在行里只留下一个16字节的指针。这意味着行的尺寸是减少了,这对性能有好处。然而,检索大数据是昂贵的,因为它不是与同一行的数据存放在同一个位置。

MAX数据类型在默认情况下,使用TEXT/IMAGE溢出行为和正常尺寸的VARCHAR/VARBINARY类型的行为的混合方式。如果一个字段的数据,加上表中所有其他字段的数据,总量少于8060字节,数据就存放在行内。如果数据超过8060字节,MAX字段的数据就会存放在行外。对于大字符串的表,以下的行将会与表中的其他数据存储在同一个数据页内:

INSERT BigStrings (BigString)

VALUES (REPLICATE('1', 8000))

But the following row will result in an overflow:

INSERT BigStrings (BigString)

VALUES (REPLICATE(CONVERT(VARCHAR(MAX), '1'), 100000))

你可以更改MAX数据类型在每个表的基础上的默认的行为,它们会表现得和TEXT和IMAGE类型一样。这是通过使用sp_tableoption 存储过程中的“大数值类型在行外”选项实现的。为了修改大字符串表以将MAX类型的处理方式变得与TEXT和IMAGE数据类型的处理方式相同,可以使用如下的T-SQL:

EXEC sp_tableoption

'BigStrings',

'large value types out of row',

'1'

看看定义一个MAX数据类型有多容易,与他们提供的灵活性一样,一些数据设计师将会被引诱以下列的方式开始定义表:

CREATE TABLE Addresses

(

Name VARCHAR(MAX),

AddressLine1 VARCHAR(MAX),

AddressLine2 VARCHAR(MAX),

City VARCHAR(MAX),

State VARCHAR(MAX),

PostalCode VARCHAR(MAX)

)

设计师要注意了:不要这样做!一个企业中的数据模型既应该包含有具有实际限制的数据,还要给用户接口设计师有关字段尺寸的大致的指导。像这样的表又该创建什么样的用户接口呢?

除了数据整合和用户接口含义之外,如果设计师这样不必要地使用这些类型还会带来性能上的损害。记住,查询优化器使用字段的尺寸作为判断优化查询计划的众多标准之一。对于这个表,优化器几乎没有任何选择。

所以,现在你知道了MAX数据类型为SQL Server 2005处理大数据增加了很大部分的灵活性。但是MegaWare的那个不幸的数据库管理员,Steve会发生什么变化?还在坚持使用SQL Server 2000,他开始更新简历,想象着如果更新表失败了话,他的工作也就失去了。但是他也是幸运的——还有世界各地的MegaWare产品的拥护者——用GOOGLE的搜索可以很快地找到这篇文章《在TEXT字段中查找并替代》,这篇文章告诉他如何正确的进行更新。他花了整晚的时间来学习资料;再过几个月之后,TEXT和IMAGE数据类型就仅仅是一段不愉快的记忆了。

标签:SQL,Server,2005,数据类型,最大值
0
投稿

猜你喜欢

  • SQL SERVER迁移之更换磁盘文件夹的完整步骤

    2024-01-25 18:37:59
  • 数据库连接方式汇总

    2024-01-15 22:15:06
  • Python 可视化matplotlib模块基础知识

    2021-09-09 05:17:45
  • Python用5行代码实现批量抠图的示例代码

    2021-04-16 23:56:05
  • XML数据查询技术已经成为现今的研究热点

    2008-09-05 17:13:00
  • Mysql索引选择以及优化详解

    2024-01-18 13:56:12
  • python3 wechatpy微信支付的项目实践

    2023-08-29 14:13:36
  • Python数据分析之双色球统计单个红和蓝球哪个比例高的方法

    2022-08-13 07:55:01
  • 浅谈MySQL 有哪些死锁场景

    2024-01-13 13:45:54
  • python的ImageTk.PhotoImage大坑及解决

    2021-02-24 13:53:04
  • Python离线安装PIL 模块的方法

    2023-02-19 22:38:37
  • django实现登录时候输入密码错误5次锁定用户十分钟

    2023-04-17 14:48:57
  • python用于url解码和中文解析的小脚本(python url decoder)

    2023-01-28 06:19:00
  • Oracle 下医嘱执行函数

    2009-03-02 10:49:00
  • Python中将字典转换为XML以及相关的命名空间解析

    2022-07-22 20:05:03
  • 基于Python实现自动化文档整理工具

    2021-10-01 01:29:19
  • python生成可执行exe控制Microsip自动填写号码并拨打功能

    2023-08-11 04:51:00
  • 使用XMLhttp生成html页面

    2007-08-17 11:21:00
  • Sql2005启用和关闭xp_cmdshell功能

    2008-09-29 15:37:00
  • Django 静态文件配置过程详解

    2021-07-08 07:27:53
  • asp之家 网络编程 m.aspxhome.com