如果你的系统是多语言版的你就会知道用CHAR有时一些汉字在转换时会出现乱码
解决方案 »
- 分页存储过程,但参数不定,怎么办?
- 请高手帮忙:如何将一个数据库中的表变成另一个数据库中的表(SQL2000下)
- 请问: sql 2000 与 sql 2005 共存时,端口会冲突么?实例名会冲突么?
- 请问insert into a1 select * from a2 如果A1和A2是在不同的数据里的表请问如何插入呢?
- 求救.我的sql server数据库最初安装的时候没有装好,怎么办?
- 我有个很棘手的问题,大家帮帮忙。
- t-sql代码求教
- 月底了,出事了,求一个问题的解法
- 非常急!!!!……如何将SQLServer中的AnalysisServices和JSP联系起来???????
- sql不能对包含聚合或子查询的表达式执行聚合函数。
- 关于DELETE或者UPDATE的操作情况
- 请教:关于桌面版数据库备份后还原问题
Because SQL Server stores text/ntext columns on the Text/Image pages separately from the other data, stored on the Data pages, it can take more time to get the text/ntext values.
Use char/varchar columns instead of nchar/nvarchar if you do not need to store unicode data.
The char/varchar value uses only one byte to store one character, the nchar/nvarchar value uses two bytes to store one character, so the char/varchar columns use two times less space to store data in comparison with nchar/nvarchar columns.
Consider setting the 'text in row' SQL Server 2000 table's option.
The text, ntext, and image values are stored on the Text/Image pages, by default. This option specifies that small text, ntext, and image values will be placed on the Data pages with other data values in a data row. This can increase the speed of read and write operations and reduce the amount of space used to store small text, ntext, and image data values. You can set the 'text in row' table option by using the sp_tableoption stored procedure.
如果希望列中数据项的大小差异很大,则使用 varchar/nvarchar。varchar/char最多支持8000。如果varchar够用的话,text最好不要用,查询效率会很低。
text最好不用,只适于存储大数据,还要用专门的函数来读写更新,麻烦
1.text能不用就不用
2.ntext 等,不需要就不用
3.char比varchar效率高一些(请高人判断一下这句是否正确)还有一个问题未解决:用varchar(10),会不会比varchar(50)快一些?
或者说,把varchar(50)用在原本可以用varchar(10)的地方,会不会造成效率降低?
char要在定长的情况下才好用,不然它会以空格填满,进行查询时就要处理。而我觉得字符型数据好象很少肯定定长的吧。2.用varchar(10),会不会比varchar(50)快一些?如果不是,就全用varchar(10000)了,因为实在懒得在insert的时候判断len(str),而且就算判断出来了,老提示用户字段过长也让人烦 这个我也想这样玩,不过我不敢这样定义!3.用nchar/char型的字段(包括另两对),区别是什么?以前似乎见有帖说是前者处理中文较好,但我一直用char型没有遇到过问题。而且,最关心的还是:nchar会不会比char的效率低一些? 多了个字母"n",它表示存储的是Unicode数据类型的字符。写过程序的朋友对Unicode应该很了解。字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较:nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。例子:我们定义char(10),写入10个中文字符,报错,只能写入5个中文,用nchar(10),10就可以写入10个中文字符。效率的衡量没有一个定论!实际char()也是要占用2个字节来存储中文,如果你又要申辩:nchar用2个字节存储英文,的确,效率,实在很难有个定论! 4.text呢?效率比别两种慢不慢?除了存地数据多之外,还有没有别的优势?
文本型数据中你可以存储超过20亿个字符串,怎么样,这个够大了吧?但是也不是任何时候都是和使用文本型数据,因为他非常占空间,也非常消耗服务器,随处乱用后果不堪设想!因为即使你像一个文本型字段输入了一个空值他都会占用2K的空间!而当这时除了删除该数据没有别的办法收回空间!效率不高这个可以肯定
当长度确定是用char一样可以减少数据库大小!这两个属性一句话:一个是时间换空间,一个是空间换时间。我的选择是一个是时间换空间
实际占用空间=f(字符串长度)=...
谢谢!
新建两个表table1 table2, 都只有一列,一个是 char(8000) 一个是varchar(8000),都插入了3050条记录(8000个字母a),在查询分析器中,输入:select * from table1
select * from table2按ctrl+L,结果很惊人:
第一句用掉了1.61%的成本,第二句用掉了98.39%。这就是char和varchar在定长字符串的处理中的效率比较
更多实验进行中...