数据库优化之创建索引

索引提供指针以指向存储在表中指定列的数据,然后根据指定的次序排列这些指针,在根据指针到达包含该值的行

什么是索引

数据库中的索引和数据的目录相似,利用目录快速查找所需的信息。在数据库中,索引是某个表中一列或者若干列值的集合,以及物流标识这些值的数据页的逻辑指针清单。是SQL Server编排数据的内部方法,通过索引,可快速查找数据,而无需扫描整个表

索引页是数据库中存储索引的数据页,存放数据行的关键字页以及该数据行的地址指针

索引分类

在SQL Server中,常见的索引有以下六类:

唯一索引:不允许两行具有相同的索引值

主键索引:要求主键中每个值是唯一的

聚集索引:数据存放的物理顺序与索引顺序相同

非聚集索引:数据存放的物理顺序与索引顺序不相同

复合索引:将多个列组合而成的索引

全文索引:一种特殊类型的基于标记的功能性索引

注意:在SQL Server中,一个表只能创建一个聚集索引,但可以创建多个非聚集索引。设置某列为主键,该列就默认为聚集索引

创建索引

创建索引的方法有两种:使用SSMS和T-SQL语句

(1)使用SSMS创建索引

可以展开表,选择“新建索引”,也可以右击表,选择“设计”,右击列,选择“索引/键”,创建索引

(2)使用T-SQL语句创建索引

创建聚集索引语法:

create clustered index 索引名 on 表名(列名)

创建非聚集索引语法:

create [nonclustered] index 索引名 on 表名(列名)

创建唯一索引

create unique [clustered|nonclustered] index 索引名 on 表名(列名)

删除索引

drop index 索引名 on 表名

索引的选择原则

使用索引可加快数据检索速度,但为每个列都建立索引没有必要。因为索引自身也需要维护,并占用一定的资源,可以按照以下标准选择建立索引的列

* 频繁搜索、查询选择的列

* 经常排序、分组的列

* 经常用于连接的列(主键、外键)

不要使用下面的列建立索引,因为索引所花的时间比在表中逐行搜索的时间更长

* 仅包含几个值的列

* 表中仅包含几行

时间: 2024-10-16 05:41:50

数据库优化之创建索引的相关文章

全文检索之lucene的优化篇--创建索引库

在上一篇HelloWorld的基础上,建立一个directory的包,添加一个DirectoryTest的测试类,用来根据指定的索引目录创建目录存放指引. DirectoryTest类中的代码如下,基本上就是在HelloWorld的基础上改改就可以了. 里面一共三个方法,testDirectory(),测试创建索引库;testDirectoryFSAndRAM(),结合方法1的两种创建方式,优化;testDirectoryOptimize(),在方法2个基础上,研究索引的优化创建,减少创建的索引

数据库优化 - 多列索引经典题目

题目 假设某个表有一个联合索引(c1,c2,c3,c4)一下--只能使用该联合索引的c1,c2,c3部分 A where c1=x and c2=x and c4>x and c3=x B where c1=x and c2=x and c4=x order by c3 C where c1=x and c4= x group by c3,c2 D where c1=x and c5=x order by c2,c3 E where c1=x and c2=x and c5=? order by

数据库优化之创建视图

视图是保存在数据库中的SELECT查询,可在视图上执行SELECT语句的大多数命令.创建视图的原因有两个:一是出于安全考虑,用户不必看到整个数据库结构,而隐藏部分数据:二是符合用户日常业务逻辑,使其对数据更容易理解 什么是视图? 视图是另一种查看数据库中一个或多个表中数据的方法.视图是一个虚拟表,通常由一个或多个表的行和列的子集创建的,它并不是数据库存储的数据值的集合,它的行和列都来自查询引用的表.在执行时,视图直接显示表中的数据. 定义视图的查询可基于一个或多个表,也可基于其他视图.当前数据库

不导致数据库阻塞的创建索引方法

先试 With (Online=On),若提示索引名存在,则 With (Online=On,Drop_Existing=On) 例如: CREATE NONCLUSTERED INDEX IX_Product_IsTrad_IsBlack_IsCheck_Include_AccountID ON [dbo].[Product] ([IsTrad],[IsBlack],[IsCheck]) INCLUDE ([AccountID]) With (Online=On) GO

数据库优化方法

常见的数据库优化方法:索引(数据库),缓存,分表,分库,sql优化. 索引:创建索引一般有以下两个目的:维护被索引列的唯一性和提供快速访问表中数据的策略.95% 的数据库能问题都可以采用索引技术得到解决.索引有助于提高检索性能,但过多或不当的索引也会导致系统低效.因为用户在表中每加进一个索引,数据库就要做更多的工作.过多的索引甚至会导致索引碎片. 缓存:hibernate,spring3有缓存模块 分表:针对每个时间周期产生大量的数据,可以考虑采用一定的策略将数据存到多个数据表中. 分库:就是将

oracle 创建索引思考(转)

在Oracle数据库中,创建索引虽然比较简单.但是要合理的创建索引则比较困难了. 笔者认为,在创建索引时要做到三个适当,即在适当的表上.适当的列上创建适当数量的索引.虽然这可以通过一句话来概括优化的索引的基本准则,但是要做到这 一点的话,需要数据库管理员做出很大的努力.具体的来说,要做到这个三个适当有如下几个要求. 一. 根据表的大小来创建索引. 虽然给表创建索引,可以提高查询的效率.但是数据库管理员需要注意的是,索引也需要一定的开销的.为此并不是说给所有的表都创建索引,那么就 可以提高数据库的

MySQL数据库优化法则总结

网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正以及补充 这篇文章我花费了大量的时间查找资料.修改希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到.纠正以及补充. 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件时硬盘可能会是瓶颈点,为什么这些一般的工作我们能快速确认瓶颈点呢,因为我们对

基础的增删改查,数据库优化,索引

mysql的特点 关系型数据库,免费使用, 插入式存储引擎, 性能高, 基础的增删改查 ddl语句,数据定义语句 123456789101112 create database test1;drop database test1;use test1;create table emp(ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2));drop table emp;alter table emp modify ename

Mysql数据库优化技术之配置篇、索引篇 ( 必看 必看 转)

转自:Mysql数据库优化技术之配置篇.索引篇 ( 必看 必看 ) (一)减少数据库访问 对于可以静态化的页面,尽可能静态化 对一个动态页面中可以静态的局部,采用静态化 部分数据可以生成XML,或者文本文件形式保存 使用数据缓存技术,例如: MemCached (二)优化的检测方法 1.用户体验检测 2.Mysql状态检测 在Mysql命令行里面使用show status命令,得到当前mysql状态. 主要关注下列属性: key_read_requests (索引读的请求数)(key_buffe