• 答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;


    http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html

    1. char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储

       过程和使用T-SQL查询数据有啥不一样;

    ------------------------------------------------

    SQL中char、varchar、nchar、nvarchar的区别

    http://www.cnblogs.com/carekee/articles/2094676.html

    char(n):定长存储定长数据很方便 效率最高  超长会截取,不够长的存储空格,应用时要用trim之类的函数把两边的空格去掉 n 必须是一个介于 1 和 8,000 之间的数值

    n代表字节数,对英文(ASCII)字符占用1个字节,也可以存储中文,对一个汉字占用2个字节

    varchar(n):长度可变且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度

    n代表字节数,每个英文(ASCII)字符都占用1个字节,也可以存储中文,对一个汉字占用两个字节  

    nvarchar(n):变长Unicode,无论英文中文字符都占2个字节   n 的值必须介于 1 与 4,000 之间  n代表字符数

    nchar(n):定长Unicode,无论英文中文字符都占2个字节   n 的值必须介于 1 与 4,000 之间  n代表字符数

    char,varchar 最多8000个英文,4000个汉字    

    nchar,nvarchar  最多可存储4000个字符,无论英文还是汉字

        何时该用CHAR,何时该用varchar2

    1、CHARVARCHAR是一对矛盾的统一体,两者是互补的关系.

    VARCHARCHAR节省空间,在效率上比CHAR会稍微差一些,

    即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。

    2、VARCHAR虽然比CHAR节省空间,但是如果一个VARCHAR列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR会更好一些。

     --------------------------------------------------------------------------------------------------

    xml的数据类型,在存储序列化数据的时候比较有用,还有就是配置文件。

    @xml.query()得到的结果也是xml

    @xml.value()得到的结果可以转换成int/varchar等。。。

    @xml.exist()检查是否包含某个节点

    @xml.modify()可以修改里面的内容

    效率:exist>query>value          --这只是我的理解,exist只是检查路径,query没有转换,value需要转换。

    XML类型查找数据的方法:query方法用于从XML数据类型提取XML;value方法用于从XML文档中返回单个值;exist方法用于确定指定节点是否存在于XML文档中。
    这几个查找数据的方法谈不上哪个效率更高,每个都有它的用途;

     --------------------------------------------------------------------------------------------------

    储过程和T-SQL:

    存储过程编译过,T-SQL每次需要重新编译;SP其实也是T-SQL的一部分。

    使用存储过程和T-sql语句最大的区别就是:存储过程在创建时就进行了编译,以后调用时不在需要编译了,速度快。而T-sql语句每次执行时都会进行编译一次的,
    会浪费很多时间,而且速度慢

  • 相关阅读:
    php魔术常量,_CLASS_,_METHOD_,_FUNCTION_
    php里parent,::和self的分别
    rewrite例子集合
    PHP中::、->;、self、$this操作符的区别
    php中const和define的区别
    aliyun二级域名绑定
    数组操作函数8
    http 301 和 302的区别
    lnmp引发的fpm502错误!
    关于php下开发的跨域问题总结(全)
  • 原文地址:https://www.cnblogs.com/dc2014/p/5192424.html
Copyright © 2020-2023  润新知