菜鸟的DBA之路[MSSQL篇] 面试官最喜欢的问题 ----索引+C#面试题客串

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 17:02 点击:

 

对大量数据进行查询时,可以应用到索引技术。索引是一种特殊类型的数据库对象,它保存着数据表中一列或者多列的排序结果,有效地使用索引可以提高数据的查询效率。大家面试初级、中级或者高级程序员的时候应该大部分都会被问到这样一些问题,你了解索引吗?你知道索引的分类吗?你知道这些索引的区别吗?你如何去创建有效的索引。本章让大家学会反问面试官hold住全场。--_____--

 

 

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

 

友情客串

 

最近面试的文章比较火 客串一下 我只简单问2个问题 看看有多少人能直接回答出来 都是比较基础的

 

1.基类虚函数、派生类重写 与 基类普通函数、派生类覆盖的区别(-____-)

 

2.Using闭包中try catch,异常捕获后抛出,那么using资源能否正常释放,概述原因(-____-)

 

答案在文章结尾揭晓

 

 

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

 

 基本知识 (面试官会问的)

 

索引是神马

 

一般说法:索引是与表关联的磁盘上结构,可以加快从表中检索行的速度。索引包含由表中的一列或多列生成的键。这些键存储在一个结构中,使SQL Server 可以快速有效地查找与键值关联的行。

 

hold说法:索引说白了就是Balanced Tree(简称B树)结构,多层次、自维护,节点存放表的数据标识信息,如果表中的一条记录在磁盘上占用500字节的话,我们对其中10字节的一个字段建立索引,那么该记录对应的索引块的大小只有10字节。这样检索IO访问量要少的多。

 

索引的分类

 

一般说法:聚集索引与非聚集索引

 

hold说法:聚集索引、非聚集索引、唯一索引、包含性列索引、索引视图、全文索引、XML索引

 

说下聚集索引与非聚集索引的区别

 

一般说法:聚集索引是基于记录内容在数据表内的排序和存储。非聚集索引不会为数据表的数据进行物理上排序,只是将索引建立在索引页上,在查询数据时一样可以从索引中找到记录存放的位置。

 

hold说法:聚集索引根据数据行的键值在表中排序和存储这些数据行。索引定义中包含聚集索引列。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序。只有当表包含聚集索引时,表中的数据行才按排序顺序存储。如果表具有聚集索引,则该表称为聚集表。如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构中。

非聚集索引具有独立于数据行的结构。非聚集索引包含非聚集索引键值,并且每个键值项都有指向包含该键值的数据行的指针。从非聚集索引中的索引行指向数据行的指针称为行定位器。行定位器的结构取决于数据页是存储在堆中还是聚集表中。对于堆,行定位器是指向行的指针。对于聚集表,行定位器是聚集索引键。

 

一张表中可以建立几个聚集索引和非聚集索引

 

一般说法:1个聚集索引和249个非聚集索引

 

hold说法:冷哼一声、笑而不语。

 

索引的设计原则

 

一般说法:表增删改操作多的少用索引 查操作多的适当建立索引

 

hold说法:

 

1.大量的索引会影响DML语句的性能;

 

2. 对小表进行索引可能不会产生优化效果;

 

3.对经常用于查询中的谓词和连接列创建非聚集索引;

 

4.覆盖索引可以提高查询性能;

 

5.聚集索引,最好保持较短的索引键;

 

6.考虑对定义完善的的列使用筛选索引;

 

7.如果索引包含多个列 ,应考虑列的顺序;

 

 

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

 

进阶知识(可以用来调戏面试官)

 

创建索引的限制

 

每个索引最多16个键列;

索引键最长900字节;

大型对象数据类型不能作为索引键列;

 

唯一索引:唯一索引确保索引键不包含重复的值,因此,表或视图中的每一行在某种程度上是唯一的。聚集索引和非聚集索引都可以是唯一索引。

 

设计原则:

 

唯一索引能够保证索引键中不包含重复的值,从而使表中的每一行从某种方式上具有唯一性。只有当唯一性是数据本身的特征时

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • sql常见面试题
    • SQL SERVER 2005性能之跟踪
    • SQL编程(一)
    • LINUX上RMAN自动备份脚本
    • sql server面试题
    • 如何将多个SQL查询统计结果一次显示出来
    • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
    • SQL小技巧系列 --- 行转列合并
    • sql server 列转行
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1