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

Question of the Day: Microsoft | Database, Multiple Questions in One相关推荐

  1. access排名_在Microsoft Access中对行进行排名

    access排名 This is the third article on row numbers in Microsoft Access. 这是有关Microsoft Access中行号的第三篇文章 ...

  2. APACHE TOMCAT INTERVIEW QUESTIONS ANSWERS【转】

    原文地址:https://www.wisdomjobs.com/e-university/apache-tomcat-interview-questions.html Question 1. What ...

  3. 2019 年,智能问答(Question Answering)的主要研究方向有哪些?

    前言 自从小夕前不久推送了这篇<文本匹配打卡点总结>,收到了不少小伙伴对于问答方向的问题,其中问的最多的就是,求!更!多!论!文!好了,于是小夕就在万能的知乎上找到了这篇良心回答,分享给有 ...

  4. azure云数据库_如何将MySQL表迁移到Microsoft Azure SQL数据库

    azure云数据库 介绍 (Introduction) Today, it is a common practice to migrate our local data to Azure. Somet ...

  5. 智能问答(Question Answering)的主要研究方向

    非事实类问题 大多数研究关注于事实类问题,而非事实类问题的研究相对不足,包括数学类的问题.判断类的问题等. [EMNLP 2019] NumNet: Machine Reading Comprehen ...

  6. citrix应用程序虚拟化_在Citrix环境中部署和更新Microsoft Access应用程序

    citrix应用程序虚拟化 思杰不灵活 (Citrix is inflexible) This is notorious and for a reason. The environment provi ...

  7. 阐明性问题生成 (Clarification Question Generation) 概览

    ©PaperWeekly 原创 · 作者|章志凌 学校|上海交通大学硕士生 研究方向|文本生成和知识图谱 Clarification/clarifying question generation (C ...

  8. dwqa问答默认single.php,WordPress互动问答插件DW Question Answer使用教程

    DW Question & Answer是一款基础功能全面的wordpress问答插件,通过该插件可以把wordpress打造成一个类似百度知道的在线互动问答平台,支持用户提交问题.回答问题: ...

  9. IQA: Visual Question Answering in Interactive Environments 心得体会

    近日看了CVPR 2018的一篇论文,IQA:Visual question answering in interactive envionments,主要描述的是用一个代理与视频内容进行交互,回答基 ...

最新文章

  1. Oracle控制文件恢复
  2. 51nod 1021 石头归并
  3. ubuntu下Anaconda安装gym包
  4. extern用法详解
  5. java 字符串时间处理_Java 时间和字符换的处理
  6. 温网告别了两位美女:伊万和莎娃
  7. 使用Java的Apache Camel入门
  8. Oracle使用hs odbc连接mssql2008
  9. 数列极差(信息学奥赛一本通-T1427)
  10. PLC与旋转编码器的连接
  11. 【深度优先搜索】网格类问题:牛客网:机器人的运动范围
  12. python列表转为一个数字_关于python:将整数列表转换为一个数字?
  13. python元组是有序还是无序_python-03 元组和字典
  14. 如何获取屏幕分辨率呢
  15. Python_爬虫笔记_2018.3.19
  16. 元数据(MetaData)
  17. 2003系统如何搭建ftp服务器配置,WINDOWSSERVER2003系统架设FTP服务器配置方法.pdf
  18. 经典C语言编程100例——题目+答案代码(1-10)
  19. 概率论考点之检验统计量(区间估计)
  20. Moodle LMS 开源教育系统

热门文章

  1. javaweb引用serverlet库
  2. 第八届蓝桥杯-日期问题
  3. 程序的灵魂-----算法
  4. onCreateOptionsMenu
  5. Silverlight WCF RIA服务(十三)数据 3
  6. 深入理解java虚拟机--线程安全与锁优化
  7. Android 柱状图
  8. vux 修改 设置 主题 颜色
  9. WIN2003 X64 系统上安装sql server 2000 的步骤
  10. three.js script vertex和fragment在react中使用/纯js写法