• SQLServer中设计表时把字段设置为允许空(null)值会影响性能吗?
  • 发布于 1个月前
  • 57 热度
    2 评论
  • 朱莎莎
  • 20 粉丝 44 篇博客
  •   

如题,我们在设计数据库的表时如果把某个字段设置为允许Null值会影响数据库查询的性能吗?或者说如果把字段设置为不允许为空是不是能提高数据库的效率?

用户评论
  • 不二神话
  • 在SQLSERVER中影响查询速度的关键在于你是否对该列值建立了索引,若该列建立了索引,比如你要查询列值=男,SQL执行直接将目标锁定在列值=男的记录,而不需进行全表扫描,若该列没建立索引,当你查询列值=男与该列值是否为空无影响;但当数据量超大时,若在该列建立索引列值,其列值是否为空作为查询条件,速度影响就比较大了。
    比如:不允许该列为空,默认为0,查询列值=0,SQL执行直接将目标锁定在列值=0的记录,而允许该列为空,查询列值 is null,就将导致引擎放弃使用索引而进行全表扫描,这样的话查询速度就会被拖慢。
    编辑程序中我们的宗旨是:尽量避免全表扫描。
  • 2019/1/1 17:46:00 [ 0 ] [ 0 ] 回复
  • 卡农
  • SQLSERVER的查询一般只和索引有关,如果你的查询条件不涉及这个允许Null值的字段,那么这个是不会影响到你的查询速度的。

    但是空值(null)在sql server中有一定的特殊性,默认情况下,空值同任何值进行逻辑运算时,将得到一个unknown类型,下文将分享大牛们对表是否设置为允许空值(null)的建议。
    1.尽量不要在数据表中允许字段为空值(null)
    2.一张数据表至少需包含一个not null限制
    ——————————————————-
    空值(null)带来的异常信息:
    1.空值(null)可能会带来count统计异常
    2.空值(null)可能会带来逻辑判断异常
    ——————————————————-
    空值(null)判断比较方法:
    1.空值(null)需使用 is null 或 is not null 进行值是否存在判断。

  • 2019/1/1 17:38:00 [ 0 ] [ 0 ] 回复