SqlServer索引、优化、约束、连接
- 索引的创建和删除
create index in_name on person(name) --创建索引 drop index person.in_name --删除索引 create index in_name_age on person(name,age) --创建两个字段索引
索引分为聚集索引和非聚集索引,
索引与表物理顺序一致,就是聚集索引,聚集索引只能有一个
索引与表物理地址不一致,就是非聚集索引 ,非聚集索引可以有多个
- 优化机巧:
- 对常用字段创建索引
- where子句尽量写在后面,如果有子查询先写子查询
- 使用参数化查询方式进行编程
- 需要查几个字段就写几个字段,不要全部用*
- 尽量少些sql,能简单实现的不要过多sql才实现
- 表连接效率高于exists和in关键字使用
- 一旦索引字段进行了计算,则会全表扫描,影响效率
- union all 效率比union高
非空约束: NOT NULL
- 单字段唯一约束:
create table studentInfo(id int identity(1,1),name varchar(20) unique) insert into studentInfo values('kit')
insert into studentInfo values('kit') --插入第二条时报错,提示定义唯一约束,不能插入重复多字段复合约束
create table TeacherInfo(id int identity(1,1),Fnum int,FDep int,constraint FND unique(fnum,fdep)) -- FND为复合约束名
表已存在,新增约束
alter table studentinfo add constraint s1 unique(name)
删除约束
alter table teacherinfo drop constraint FND --删除复合约束
检查约束check
alter table Person add check(age > 2) --新增检查约束标识年龄必须大于2
主键约束,主键后跟 primary key
alter table studentinfo add constraint py primary key(id) --新增主键约束
alter table studentinfo drop constraint py --删除约束外键约束
create table Person(ID int identity(1,1),Name varchar(20),Age int,DepID nvarchar(20),primary key(id),foreign key(DepID) references DepMent(id))
表连接
--表连接 select * from Person
select * from Depment
--内连接,默认只写一个join就是内连接
select Person.name,Depment.depname from Person
inner join Depment
on Depment.id = Person.DepID
where DepID = '' --交叉连接:涉及到的表的所有记录都显示出来
select p.Name,d.depname from Person p
cross join Depment d --外部连接 --左外连接:不管是否匹配成功,都会返回左边全部记录
select p.Name,d.depname from Person p
left outer join Depment d
on p.depid = d.id --右外连接:返回右表全部数据,和左表匹配数据
select p.Name,d.depname from Person p
right outer join Depment d
on d.id = p.DepID --全部外连接
select p.Name,d.depname from Person p
full outer join Depment d
on d.id = p.DepID
SqlServer索引、优化、约束、连接的更多相关文章
- sqlserver 索引优化 CPU占用过高 执行分析 服务器检查
原文:sqlserver 索引优化 CPU占用过高 执行分析 服务器检查 1. 管理公司一台服务器,上面放的东西挺多的.有一天有个哥们告诉我现在程序卡的厉害.我给他说,是时候读点优化的书了.别一天到晚 ...
- SqlServer索引优化 查看碎片情况
本文引自 DBCC DBREINDEX重建索引提高SQL Server性能 查看碎片情况使用 dbcc showcontig 函数来进行 代码: --改成当前库 use DB_Name --创建变量 ...
- SqlServer性能优化 查询和索引优化(十二)
查询优化的过程: 查询优化: 功能:分析语句后最终生成执行计划 分析:获取操作语句参数 索引选择 Join算法选择 创建测试的表: select * into EmployeeOp from Adve ...
- SQLServer与MySQL约束/索引命名的一些差异总结
约束是数据库完整性的保证,主要分为:主键/外键/唯一键/默认值/check等类别,约束是一个逻辑概念,表示数据的某些特性(不能为空,唯一,必须满足某些条件等等),索引是一个逻辑与物理概念的结合,逻辑上 ...
- SQL 查询优化 索引优化
sql语句优化 性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的 ...
- 03.SQLServer性能优化之---存储优化系列
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概 述:http://www.cnblogs.com/dunitian/p/60413 ...
- MySQL索引优化看这篇文章就够了!
阅读本文大概需要 5 分钟. 来源:cnblogs.com/songwenjie/p/9410009.html 本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引 ...
- SQL通用优化方案(where优化、索引优化、分页优化、事务优化、临时表优化)
SQL通用优化方案:1. 使用参数化查询:防止SQL注入,预编译SQL命令提高效率2. 去掉不必要的查询和搜索字段:其实在项目的实际应用中,很多查询条件是可有可无的,能从源头上避免的多余功能尽量砍掉, ...
- 讲真,MySQL索引优化看这篇文章就够了
本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开. 一.MySQL——索引基础 首先,我们将从索引基础开始介绍一下什么 ...
- 一本彻底搞懂MySQL索引优化EXPLAIN百科全书
1.MySQL逻辑架构 日常在CURD的过程中,都避免不了跟数据库打交道,大多数业务都离不开数据库表的设计和SQL的编写,那如何让你编写的SQL语句性能更优呢? 先来整体看下MySQL逻辑架构图: M ...
随机推荐
- Java程序设计17——多线程-Part-C
11 使用管道流 前面介绍的两种方式与其称为线程之间的通信,还不如称为线程之间协调运行的控制策略.如果需要在两条线程之间进行更多的信息交互,则可以考虑使用管道流进行通信. 管道流有3中存在形式:Pip ...
- C语言 void 万能类型
C中 void类型其实是一种万能类型, 也就是说 我们的 void 可以代表任意一种类型,也就是说他的范围要比具体的一种类型要宽广, 例如: int *p = NULL;void *ptr = p; ...
- Appium之打开应用时提示框处理
当打开一个应用时,会有一个无关紧要的提示框,如果要继续操作,需要先关闭提示框,如下图(如新用户福利提示): 此时,如果你直接用Appium inspector或者Android uiautomator ...
- 线上服务 CPU 100%?一键定位 so easy!
转自: https://my.oschina.net/leejun2005/blog/1524687 摘要: 本文主要针对 Java 服务而言 0.背景 经常做后端服务开发的同学,或多或少都 ...
- opengl教程推荐
非常不错的教程! OpenGL教程
- DELPHI移动端支付宝支付
Delphi XE7 Android 应用接入支付宝SDK的方法 1 应用场景和准备工作: 采用XE系列开发的android apps. apps中需要集成支付宝的支付能力. 支付到指定的商 ...
- ffmpeg学习(一)——在window7下编译ffmpeg
FFmpeg是一个开源免费跨平台的视频和音频流项目,它提供了录制.转换以及流化音视频的完整解决方案.本文作者将尝试使用该库实现一个可适应复杂网络环境的, 支持标准rtsp协议的流媒体服务器.由于Vis ...
- 好看的table样式
收藏个好看的table样式 <style type="text/css">table.gridtable { font-family: verdana,arial,sa ...
- C#用 catch 捕获异类的常用类型
C#用 catch 捕获异类的常用类型 最近在书上刚刚学到了try和catch用法,然后网上找了下常用的,自己存在这里方便自己查找 Exception 类 描述 SystemException 其他 ...
- DevExpress GridControl使用教程:之 添加 checkbox 复选框
添加一列,FieldName为"FLAG",将ColumnEdit设置为复选框样式. gridview1 =>optionsbehavior => editabl ...