2021数据库考试题及答案 mysql题目和详细答案( 十 )


NULL columns require additional space in the rowto record whether their values are NULL. For MyISAM tables, each NULL columntakes one bit extra, rounded up to the nearest byte.
null值会占用更多的字节,且会在程序中造成很多与预期不符的情况.
很多表都包含可为NULL(空值)的列,即使应用程序并不需要保存NULL 也是如此,这是因为可为NULL 是列的默认属性 。通常情况下最好指定列为NOT NULL, 除非真的需要存储NULL 值 。如果查询中包含可为NULL 的列,对MySQL来说更难优化,因为可为NULL 的列 使得索引、 索引统计和值比较都更复杂 。可为 N ULL的列会使用更多的存储空间,在MySQL里也需要特殊处理 。当可为NULL的列被索引时,每个索引记录需要一个额 外的字节,在MyISAM 里甚至还可能导致固定大小的索引(例如只有一个整数列的索引)变成可变大小的索引 。通常把可为NULL 的列改为NOT NULL 带来的性能提升比较小,所以(调优时)没有 必要首先在现有schema中查找井修改掉这种情况,除非确定这会导致问题 。但是,如果计划在列上建索引,就应该尽扯避免设计成可为 NULL 的列 。当然也有例外,例如值得一提的是,lnnoDB 使用单独的位 (bit) 存储NULL 值,所以对于稀疏数据 有很好的空间效率 。但这一点不适用千MyISAM 。26.varchar(10)和int(10)代表什么含义varchar的10代表了申请的空间长度,也是可以存储的数据的最大长度,而int的10只是代表了展示的长度,不足10位以0填充.也就是说,int(1)和int(10)所能存储的数字大小以及占用的空间都是相同的,只是在展示时按照长度展示 。
27.视图是什么?对比普通表优势?视图(View)是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的 。视图并 不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时 动态生成的 。
视图相对于普通的表的优势主要包括以下几项 。
简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集 。安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能 限制到某个行某个列,但是通过视图就可以简单的实现 。数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加 列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问 者的影响 。28.coun()在不同引擎的实现方式?count()的实现方式:在不同的MySQL引擎中,count()实现的方式不同 。· MyISAM引擎中把一个表的总行数直接存在了磁盘上,执行count() 的时候直接返回这个数,效率很高;(不支持事务)· 而InnoDB引擎,执行count()的时候,需要把数据一行一行的从引擎读出来,然后累计计数;(因为MVCC的实现,应该返回多少行是不确定的(自己能读到自己事务的未提交记录,而不能读到别人事务的未提交记录))
但是InnoDB在执行count()是做了优化的 。InnoDB是索引组织表,主键索引树的叶子节点是数据,而普通索引树的叶子节点是主键值 。所以,普通索引树比主键索引树小很多 。对于count()这个操作,遍历哪个索引树得到的结果逻辑上是一样的,所以MySQL优化器会选择最小的那棵树来遍历 。在保证逻辑正确的前提下,尽量减少扫描的数据量,是数据库系统设计的通用法则之一 。
count(* )返回的结果集,一行行的判断,如果count函数的参数不是NULL,累计值就加1,最后返回累加值 。server层要什么,InnoDB就返回什么 。(就是SQL语句要什么字段,InnoDB就返回什么字段)count(字段) 则表示返回满足条件的数据行里面,字段值不为NULL的总个数 。1.如果字段定义为not null的话,一行行的从记录里面读出这个字段,判断不能为null,按行累加;2.如果字段定义允许为null,执行的时候判断到有可能是null,还要把值取出来再判断一下,不是null才累加 。count(主键id): InnoDB引擎会遍历整张表,把每一行的id取出来,返回给server层 。server层拿到id后,判断是不可能为空的,就按行累加 。count(1): InnoDB引擎会遍历整张表,但不取值 。server层对于返回的每一行,放一个数字”1″进去,判断是不可能为空的,按行累加 。结果: count(*)≈count(1)>count(主键id)>count(字段) 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: