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 ...
随机推荐
- iOS Orientation获取
[iOS Orientation获取] 1.[[UIDevice sharedInstance] orientation] 必须调用beginGeneratingDeviceOrientationNo ...
- [GO] go使用etcd和watch方法进行实时的配置变更
监控代码 package main import ( "go.etcd.io/etcd/clientv3" "time" "fmt" &qu ...
- Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息
1. 查看内存信息 1)查看所有内存信息 命令: dumpsys meminfo 例: C:\Users\laiyu>adb shell shell@android:/ $ dumpsys m ...
- (轉載)sql server xml字段的操作
原文轉自:http://blog.csdn.net/hliq5399/article/details/8315373 另外可參考:https://msdn.microsoft.com/en-us/li ...
- 洛谷P4556 [Vani有约会]雨天的尾巴(线段树合并)
题目背景 深绘里一直很讨厌雨天. 灼热的天气穿透了前半个夏天,后来一场大雨和随之而来的洪水,浇灭了一切. 虽然深绘里家乡的小村落对洪水有着顽固的抵抗力,但也倒了几座老房子,几棵老树被连根拔起,以及田地 ...
- handsontable-developer guide-setting options,callback
1.cell数组 cell: [ {row: 0, col: 0, readOnly: true} ] 2.cells函数 cells: function(row, col, prop){ var c ...
- 团队博客第三周(Running Duck队)
代码链接:Tetris 码云链接 一.需求&原型改进 1.原型改进 汉字方块每次可生成一个并逐渐下落 可通过触摸左右下滑动实现方块的左右移动和快速下滑 左上角按钮可对汉字进行暂时保存和替换 右 ...
- php 5.6 与之前版本不兼容中的数组属性定义辨析
在php5.6官方文档的不兼容页(http://php.net/manual/zh/migration56.incompatible.php)中提到了几个与以前版本不兼容的情况,其中提到了为类定义数组 ...
- AngularJs2 构建简单的英雄编辑器
参考上一篇文章的步骤,重新把相关环境准备.目录结构走一遍. 这一次我们要开始创建真正的Angularjs项目了. 显示我们的英雄 我们要在应用中显示英雄数据 我们来为 AppComponent 添加两 ...
- 使用oracle9的 odbc 连接oracle11
客户机上基于Oracle 9i的ODBC数据源,无法连接oracle 11G数据库,提示错误为:error ORA-01017, Invalid Username / Password.奇怪的是:sq ...