菜鸟的DBA之路[MSSQL篇] 面试官最喜欢的问题 ----索引+C#面试题客串
对大量数据进行查询时,可以应用到索引技术。索引是一种特殊类型的数据库对象,它保存着数据表中一列或者多列的排序结果,有效地使用索引可以提高数据的查询效率。大家面试初级、中级或者高级程序员的时候应该大部分都会被问到这样一些问题,你了解索引吗?你知道索引的分类吗?你知道这些索引的区别吗?你如何去创建有效的索引。本章让大家学会反问面试官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字节;
大型对象数据类型不能作为索引键列;
唯一索引:唯一索引确保索引键不包含重复的值,因此,表或视图中的每一行在某种程度上是唯一的。聚集索引和非聚集索引都可以是唯一索引。
设计原则:
唯一索引能够保证索引键中不包含重复的值,从而使表中的每一行从某种方式上具有唯一性。只有当唯一性是数据本身的特征时
相关新闻>>
- 发表评论
-
- 最新评论 更多>>