还剩4页未读,继续阅读
文本内容:
工程师面试笔试题目Database工程师题库Database、查询全部老师和同学的、和1name sexbirthday.、查询全部“女老师和“女〃同学的、和2name sexbirthday.、查询成果比该课程平均成果低的同学的成果表
3、查询全部任课老师的和4Tname Depart.查询全部未讲课的老师的和5Tname Depart.、查询至少有名男生的班号
62、查询表中不姓“王〃的同学记录7Student、查询表中每个学生的姓名和年龄8Student、查询表中最大和最小的日期值9Student Sbirthday、以班号和年龄从大到小的依次查询表中的全部记录10Student、查询〃男〃老师及其所上的课程11查询最高分同学的、和列12^Sno CnoDegree、查询和“李军〃同性别的全部同学的13Sname.、查询和“李军〃同性别并同班的同学14Sname.、查询全部选修“计算机导论〃课程的“男〃同学的成果表15什么是聚集索引和非聚集索引⑴非聚集索引非聚集索引与课本中的索引类似数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置索引中的项目按索引键值的依次存储,而表中的信息按另一种依次存储(这可以由聚集索引规定)假如在表中未创建聚集索引,则无法保证这些行具有任何特定的依次典型的桌面数据库运用的是非聚集索引在这类索引中,索引键值是有序的,而每个索引节点所指向的数据行是无序的一个SQL Server表最多可以拥有个非聚集索引255非聚集索引与聚集索引一样有树结构,但是有两个重大差别:B-、数据行不按非聚集索引键的依次排序和存储
1、非聚集索引的叶层不包含数据页2相反,叶节点包含索引行每个索引行包含非聚集键值以及一个或多个行定位器,这些行定位器指向有该键值的数据行(假如索引不唯一,则可能是多行)非聚集索引可以在有聚集索引的表、堆集或索引视图上定义在中,非聚集索引中的行定位器有两种形SQLServer式、假如表是堆集(没有聚集索引),行定位器就是指向行的指针1该指针用文件标识符()、页码和页上的行数生成整个指针称为行IDIDo、假如表是堆集(没有聚集索引),行定位器就是指向行的指针2该指针用文件标识符()、页码和页上的行数生成整个指针称为行IDIDo由于非聚集索引将聚集索引键作为其行指针存储,因此使聚集索引键尽可能小很重要假如表还有非聚集索引,请不要选择大的列作为聚集索引的键在创建非聚集索引之前,应先了解您的数据是如何被访问的可考虑将非聚集索引用于包含大量非重复值的列,如姓氏和名字的组合(假如聚集索引用于其它列)假如只有很少的非重复值,如只有和则大多数查询将10,、不运用索引,因为此时表扫描通常更有效
3、不返回大型结果集的查询
1、返回精确匹配的查询的搜寻条件(子句)中经常运用的2WHERE列、经常须要联接和分组的决策支持系统应用程序应在联接和分3组操作中运用的列上创建多个非聚集索引,在任何外键列上创建一个聚集索引、在特定的查询中覆盖一个表中的全部列这将完全消退对表或4聚集索引的访问()聚集索引2聚集索引确定表中数据的物理依次聚集索引类似于电话簿,后者按姓氏排列数据由于聚集索引规定数据在表中的物理存储依次,因此一个表只能包含一个聚集索引但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样聚集索引在系统数据库表内有一行,其数据链sysindexes indid=lo内的页和其内的行按聚集索引键值排序全部插入都在所插入行中的键值与排序依次相匹配时执行将索引组织为树索引内的每一页包含一个页首,页SQL ServerB-首后面跟着索引行每个索引行都包含一个键值以及一个指向较低级页或数据行的指针索引的每个页称为索引节点树的顶端节点称B-为根节点索引的底层节点称为叶节点每级索引中的页链接在双向链接列表中在聚集索引内数据页组成叶节点根和叶之间的任何索引级统称为中间级对于聚集索引,指向它的顶端沿着聚sysindexes.root SQL Server集索引阅读以找到聚集索引键对应的行为找到键的范围,SQL Server阅读索引以找到这个范围的起始键值,然后用向前或向后指针扫描数据页为找到数据页链的首页,从索引的根节点起先沿最SQL Server左边的指针进行扫描.聚集索引对于那些经常要搜寻范围值的列特殊有效运用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻例如,假如应用程序执行的一个查询经常检索某一日期范围内的记录,则运用聚集索引可以快速找到包含起先日期的行,然后检索表中全部相邻的行,直到到达结束日期这样有助于提高此类查询的性能同样,假如对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避开每次查询该列时都进行排序,从而节约成本对于聚集索引,人们往往有一些错误的相识其中,最常见的错误有:、聚集索引会降低操作的速度,因为必须要向后移动一半1insert的数据来为新插入的行腾出空间这种相识是错误的,因为可以利用填充因子限制填充的百分比,从而在索引页上为新插入的数据保留空间假如索引页填满了,将会进行页拆分,在这种状况下SQLServer只有第一个页才会受到影响、在运用标识列的主键上创建聚集索引是一种好的设计方法,它2可以使对表的操作达到最快速度这种相识是错误的,它奢侈了创建其它更有效的聚集索引的机会并且,运用这种方法会把每个新插入的记录行都存储到表尾部的同一个的数据页中,这将导致数据库的热点和锁争用笔者曾经见过接受这种方法设计的数据库,对于每一个新订单,客户服务人员都不得不等待数分钟来加以确认、聚集索引是具有魔力的假如哪个查询的速度不够快,那么就3在该列上创建聚集索引,对于表的操作速度肯定会得到提高这种相识也是错误的,聚集索引只是比非聚集索引稍稍快了那么一点点因为在每个表上只能创建一个聚集索引,所以它也是一种珍贵的性能资源,只有在那些经常作为条件查询一组记录行的列上才应当建立聚集索引中和的区分Oracle delete,truncate drop吩咐用来删除表的全部或者一部分数据行,执行之后,Delete delete用户须要提交或者回滚来执行删除或者commmit rollbacktransaction撤销删除,吩咐会触发这个表上全部的触发器delete delete删除表中的全部数据,这个操作不能回滚,也不会触发Truncate这个表上的触发器,比更快,占用的空间更小TRUNCATE delete吩咐从数据库中删除表,全部的数据行,索引和权限也会被Drop删除,全部的触发器也不会被触发,这个吩咐也不能回滚DML。
个人认证
优秀文档
获得点赞 0