Question of the Day: Microsoft | Database, Multiple Questions in One

Question of the Day: Microsoft | Database, Multiple Questions in One
from CareerCup by Jason Yip
HR: SQL What is an index? Explain cluster index. What are the different types of joins. Explain. Explain normalizatiion. What is a foreign key? What is the difference between a primary key and a foreign key? Other basic SQL concepts.

问:Cluster Index和Noncluster Index的区别,主要是使用上的区别

Cluster Index和Noncluster Index的结构都是平衡树。它们的主要区别是Cluster Index的叶子节点是DATA PAGE而Noncluster Index的叶子节点是数据在DATA PAGE中的指针

Cluster Index使表记录按物理地址排序,唯一(一般被主键占用)
Noncluster Index使表记录按逻辑地址排序,多个

Cluster Index 在表中只能有一个,而Noncluster Index在表中可以有多个,
通常下面情况可以考虑设置为Cluster Index :
1含数量有限的唯一值的列.
2用下列运算符返回一个范围值的查询:BETWEEN、>、>=、< 和 <=。
3回大结果集的查询。

可考虑将聚集索引用于:

包含大量非重复值的列。


使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、< 和 <=。


被连续访问的列。


返回大型结果集的查询。


经常被使用联接或 GROUP BY 子句的查询访问的列;一般来说,这些是外键列。对 ORDER BY 或 GROUP BY 子句中指定的列进行索引,可以使 SQL Server 不必对数据进行排序,因为这些行已经排序。这样可以提高查询性能。


OLTP 类型的应用程序,这些程序要求进行非常快速的单行查找(一般通过主键)。应在主键上创建聚集索引。
聚集索引不适用于:

频繁更改的列
这将导致整行移动(因为 SQL Server 必须按物理顺序保留行中的数据值)。这一点要特别注意,因为在大数据量事务处理系统中数据是易失的。

宽键
来自聚集索引的键值由所有非聚集索引作为查找键使用,因此存储在每个非聚集索引的叶条目内。

每个表中只能创建一个聚集索引,每个表可以创建的非聚集索引最多为 249 个

索引是在数据库表或者视图上创建的对象,目的是为了加快对表或视图的查询的速度

按照存储方式分为:聚集与非聚集索引
按照维护与管理索引角度分为:唯一索引、复合索引和系统自动创建的索引

索引的结构是由:根节点--->非叶节点--->非叶节点--->叶节点


1、聚集索引:表中存储的数据按照索引的顺序存储,检索效率比普通索引高,但对数据新增/修改/删除的影响比较大
特点:
 
  (1) 一个表可以最多可以创建249个索引
  (2) 先建聚集索引才能创建非聚集索引
   (3) 非聚集索引数据与索引不同序
   (4) 数据与索引在不同位置
   (5) 索引在叶节点上存储,在叶节点上有一个"指针"直接指向要查询的数据区域
   (6) 数据不会根据索引键的顺序重新排列数据
  
 创建聚集索引的语法:
  create NONCLUSTERED INDEX idximpID ON EMP(empID)
2、非聚集索引:不影响表中的数据存储顺序,检索效率比聚集索引低,对数据新增/修改/删除的影响很少
特点:
  (1) 无索引,数据无序
  (2) 有索引,数据与索引同序
  (3) 数据会根据索引键的顺序重新排列数据
  (4) 一个表只能有一个索引
  (5) 叶节点的指针指向的数据也在同一位置存储
语法:
create CLUSTERED INDEX idxempID on emp(empID)
3、惟一索引:惟一索引可以确保索引列不包含重复的值.
可以用多个列,但是索引可以确保索引列中每个值组合都是唯一的
姓  名
李  二
张  三
王  五
语法: create unique index idxempid on emp(姓,名)

4、复合索引:如果在两上以上的列上创建一个索引,则称为复合索引。
那么,不可能有两行的姓和名是重复的
语法:
create index indxfullname on addressbook(firstname,lastname)

5、系统自建的索引:在使用T_sql语句创建表的时候使用PRIMARY KEY或UNIQUE约束时,会在表上自动创建一个惟一索引
自动创建的索引是无法删除的
语法:
create table ABc
( empID int primary key,
  firstname varchar(50)UNIQUE,
  lastname  varchar(50)UNIQUE,
)
这样的结果就出来了三个索引,但只有一个聚集索引哦


6、创建索引的方法:
1、企业管理器中
   (1)右击某个表,所有任务---管理索引,打开管理索引,单击“新建”就可以创建索引
   (2)在设计表中进行设计表,管理索引/键
   (3)在关系图中,添加表后右击关系图中的某个表,就有“索引/键”
   (4)通过向导,数据库---创建索引向导
   (5)通过T-SQL语句
2、能过“索引优化向导”来优化索引的向导,通过它可以决定选择哪些列做为索引列
 

 

实验的流程:
1、先创建一个表,然后查看一下他的占用资源情况及select * from 表
    看一下排序
2、然后创建索引,在观看一下占用资源的情况,及排序情况,看看聚集与非聚集的排序是
  否用变化
 答案是:聚集的有变化,非聚集的排序与未创建索引之前一样


内联结、外联结、左联结、右联结
Posted on 2007-09-11 20:49 水清木华 阅读(18) 评论(0)  编辑  收藏 
1. 内联结:将两个表中存在联结关系的字段符合联结关系的那些记录形成记录集的联结。

2. 外联结:分为外左联结和外右联结。

左联结A、B表的意思就是将表A中的全部记录和表B中联结的字段与表A的联结字段符合联结条件的那些记录形成的记录集的联结,这里注意的是最后出来的记录集会包括表A的全部记录。

右联结A、B表的结果和左联结B、A的结果是一样的,也就是说:

Select A.name B.name From A Left Join B On A.id=B.id

和Select A.name B.name From B Right Join A on B.id=A.id执行后的结果是一样的。

3.全联结:将两个表中存在联结关系的字段的所有记录取出形成记录集的联结(这个不需要记忆,只要是查询中提到了的表的字段都会取出,无论是否符合联结条件,因此意义不大)。

4.无联结:不用解释了吧,就是没有使用联结功能呗,也有自联结的说法

转载于:https://www.cnblogs.com/cutepig/archive/2007/09/26/907102.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】在windows上安装VTK

看了很多教程&#xff0c;花了1天半的时间装上了&#xff0c;记录下。 前置条件&#xff1a;我安装了VS2015&#xff0c;用来编译工程。 参考资料 官方&#xff1a;http://www.vtk.org/Wiki/VTK/Building 安装&#xff1a;http://blog.csdn.net/Chinamming/article/details/1…

映射网络驱动器后为什么每次都要重新连接_如何映射网络驱动器?

有些设备的电脑需要处理一些共享资料或者需要一些外部资料才能生产运行&#xff0c;但是这些资料在本电脑没有&#xff0c;要去企业的公共盘&#xff08;共享磁盘&#xff09;里面获取&#xff0c;公共盘是网络上驱动器&#xff0c;这时候我们就要把公共盘映射到本地电脑。PCB厂…

解析 Linux 中的 VFS 文件系统机制

简介&#xff1a; 本文阐述 Linux 中的文件系统部分&#xff0c;源代码来自基于 IA32 的 2.4.20 内核。总体上说 Linux 下的文件系统主要可分为三大块&#xff1a;一是上层的文件系统的系统调用&#xff0c;二是虚拟文件系统 VFS(Virtual Filesystem Switch)&#xff0c;三是挂…

Js——elementFromPoint方法

src&#xff1a;http://www.aspxuexi.com/html/dhtml/2007-8-30/elementFromPoint.htm 语法&#xff1a; oElement document . elementFromPoint ( iX , iY ) 参数&#xff1a; iX :  必选项。整数(Integer)。单位&#xff1a;象素(Pixel)。定位横坐标偏移量。 iY :  必…

【转】C++中#include包含头文件带 .h 和不带 .h 的区别

C中#include包含头文件带 .h 和不带 .h 的区别&#xff1f; 如 #include <iostream> 和 #include <iostream.h> 包含的东西有哪些不同&#xff1f;之前在写C程序的时候只知道使用 #include <iostream> 的时候&#xff0c;使用函数前要用 using namespace st…

mysql 第二大的数据_MYSQL – 从大表中的第二行中选择数据

我有一个外部第三方程序实时将数据库导出到mysql,我想显示报告数据.所以,我无法改变结构,因为它是实时同步的.表结构是这样的ID | Date | Transaction-----------------------------12 | 2012-11-01 | 20012 | 2012-11-02 | 25012 | 2012-11-03 | 15012 | 2012-11-04 | 100012 …

串口通讯编程一日通1(整合资料) .

本文以VC为平台进行串口通信编程 串口通讯在VC下实现方式有很多&#xff0c;控件自然是最简单话的方式了&#xff0c;但由于控件只支持对话框程序&#xff0c;有些场合又不需要对话框&#xff0c;所以用Windows API实现是比较好的方式 串行通信的操作方式 1.同步方式 同步方…

去除分页预览

有时我们在打开一个Excel表的时候,会出现如下图样式: 此为作了"分页预览"设置,取消方法如下图: 选择"普通"即可转载于:https://www.cnblogs.com/wxbbk/archive/2007/10/07/915773.html

【转】C++指针详解!!!!

指针的概念 指针是一个特殊的变量&#xff0c;它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容&#xff1a;指针的类型&#xff0c;指针所指向的类型&#xff0c;指针的值或者叫指针所指向的内存区&#xff0c;还有指针本身所占据的内…

mysql rename语法错误_为什么现在MySQL无法重命名数据库?

MySQL 之前提供了一个 rename database db_old to db_new 的命令来直接对数据库改名&#xff0c;可能由于实现的功能不完备(比如&#xff0c;这条命令可能是一个超大的事务&#xff0c;或者是由于之前的表很多还是 MyISAM 等)&#xff0c;后来的版本直接取消了这条命令。一、my…

串口通讯编程一日通2(Overlapped IO模型)

第一篇初步了解串口的大致运作&#xff0c;接下来我们看基本操作 先看串口操作的数据结构&#xff1a; 串口操作有几个比较重要的Struct 1.Overlapped I/O 异步I/O模型 异步I/O和同步I/O不同&#xff0c;同步I/O时&#xff0c;程序被挂起&#xff0c;一直到I/O处理完&#xff0…

【转】VTK + QT + VS 编译安装配置

VTK Vtk&#xff0c;&#xff08;visualization toolkit&#xff09;是一个开源的免费软件系统&#xff0c;主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的&#xff0c;它的内核是用C构建的&#xff0c;包含有大约250,000行代码&#…

python手动回收内存哪家好_谈谈如何手动释放Python的内存

在上篇博客中&#xff0c;提到了对一个脚本进行的多次优化。当时以为已经优化得差不多了&#xff0c;但是当测试人员测试时&#xff0c;我才发现&#xff0c;踩到了Python的一个大坑。在上文的优化中&#xff0c;对每500个用户&#xff0c;会进行一些计算并记录结果在磁盘文件中…

串口通讯编程一日通3(COMMTIMEOUTS DCB整理)

上一篇看了Overlapped IO模型后&#xff0c;接下来看剩下两个重要结构&#xff1a; 2.COMMTIMEOUTS结构 超时设置 COMMTIMEOUTS&#xff1a;COMMTIMEOUTS主要用于串口超时参数设置。COMMTIMEOUTS结构如下&#xff1a; typedef struct _COMMTIMEOUTS { D…

【转】ITK和VTK比较

概念比较安装步骤遇到的问题 转自&#xff1a;https://blog.csdn.net/qq_34690929/article/details/78146523 概念比较 基本概念ITK&#xff08;Insight Segmentation and Registration Toolkit&#xff09;VTK&#xff08;visualization toolkit&#xff09;作用一款医学图像…

用Linq转换数据

Linq的好处不用多说。由于它能Linq TO XXX&#xff0c;所以用它进行XXX数据类型之间的转换也是非常惬意的事情。 转载于:https://www.cnblogs.com/think/archive/2007/10/26/Linq1.html

进程控制1--fork vfork函数

linux系统调用fork()创建一个和当前进程完全相同的拷贝进程&#xff0c;其中父进程和子进程的代码段&#xff0c;堆栈段&#xff0c;数据段均独立 进程必须的4要点&#xff1a; a.要有一段程序供该进程运行 b.进程专用的系统堆栈空间。 c.进程控制块&#xff0c;在linux中具体实…

eveningplan

熨衣服预习c#写三分钟演讲稿收拾房间 转载于:https://www.cnblogs.com/loverain/archive/2007/11/12/957136.html

【转】我的CV之路第一篇:ITK是啥?

Itk篇 &#xff08;Insight Segmentation and Registration Toolkit&#xff09;ITK Itk篇前言一、ITK是什么&#xff1f;二、一些函数 1.读/写图片2.滤波器 前言 学习医疗图像分割过程中&#xff0c;遇到了很多困难&#xff0c;英文文献&#xff0c;数学基础&#xff0c;图像…

mysql slowlog中querytime分析_技术分享 | Slow Query Log 使用详解

作者&#xff1a;宓祥康爱可生交付服务部团队 DBA 擅长日志分析、问题排查等&#xff1b;主要负责处理 MySQL 与我司自研数据库自动化管理平台 DMP 的日常运维问题&#xff0c;对数据库及周边技术有浓厚的学习兴趣。本文来源&#xff1a;原创投稿爱可生开源社区出品&#xff0c…