索引

一个表上可建多个索引。

索引可以提高查询效率,但索引过多耗费空间,且降低了插入、删除、更新的效率

较适合常用"select比较多"的表

索引相当于一个目录
加快你查询的
只不过是一个虚拟的,对用户来说是透明看不到的

CREATE INDEX index_name
ON table_name (column_name)

在良好的数据库设计基础上,能有效地使用索引是SQL Server取得高性能的基础,SQL Server采用基于代价的优化模型,它对每一个提交的有关表的查询,决定是否使用索引或用哪一个索引。

因为查询执行的大部分开销是磁盘I/O,使用索引 提高性能的一个主要目标是避免全表扫描,因为全表扫描需要从磁盘上读表的每一个数据页,如果有索引指向数据值,则查询只需读几次磁盘就可以了。

所以如果建 立了合理的索引,优化器就能利用索引加速数据的查询过程。

但是,索引并不总是提高系统的性能,在增、删、改操作中索引的存在会增加一定的工作量,因此,在 适当的地方增加适当的索引并从不合理的地方删除次优的索引,将有助于优化那些性能较差的SQL Server应用。

实践表明,合理的索引设计是建立在对各种查询的分析和预测上的,只有正确地使索引与程序结合起来,才能产生最佳的优化方案。本文就 SQL Server索引的性能问题进行了一些分析和实践。

比如:

建索引主要是用于提高检索数据的速度.
如果你有一个表(表名假设叫Table1)有一个字段名称是Name,记录有100000行.
有如下的查询语句:select * from Table1 where Name='zhangshan'
在没有针对Name创建索引的时候,这个查询会相当慢,到少比创建了索引后慢好几倍.这就是索引的好处之一.
你并不知道你用了它,只能从查询速度上感觉出来.

原文地址:https://www.cnblogs.com/smallfa/p/1358866.html