`

SQL基础总结(十):索引

 
阅读更多

 

 

本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)

--------------------------------

对于以下列创建索引是恰当的,这些列经常被:查询、排序、分组、联结、用来计算顺序统计(MINMAX或中值)。

对于以下列创建索引是不恰当的:仅接受很少不同值(如性别)、很少被用于查询、只有几行的小表的一部分。

 

索引不会改变数据,仅仅是快速访问数据的途径。

表可以没有或有多个索引。

 

不要超出需求创建索引。DBMS在插入、更新或删除行之后必须更新索引。随着表索引的增长,DBMS要花费越来越多的时间维护索引,行的修改速度会越来越慢。因此,不要在一张表上创建超过10个索引。

 

在索引被创建后,DBMS自动维护和使用索引。

 

索引可以引用表的一列或多列。引用一列的索引称为简单索引,引用多列的索引称为组合索引。组合索引中的列在表中不一定是相邻的,简单索引无法垮多个表。

 

列的顺序在组合索引中是重要的。组合索引只作用于定义它的那组列,并非分别作用于每个列或相同列地其他顺序。

 

为了高效的排序和检索,索引要确保唯一性。唯一索引强制表索引中列(或多列)的值唯一。如果要在有重复值的列上创建唯一索引,DBMS将产生错误并拒绝创建。当创建主键约束和唯一约束时,DBMS自动创建唯一索引。

 

索引不是SQL标准的一部分,所以与索引有联系的SQL语句因DBMS不同而有差异。

CREATE [UNIQUE] INDEX index ON table(index_columns);

index_columns是要创建索引的一个或多个用逗号分隔的列名。

一个数据库中索引名称必须唯一。

试图在唯一索引中插入或更新重复的值,DBMS会产生错误并取消操作。

组合索引:

CREATE TABLE state_city_idx ON authors(state,city);

当按照statecity对行排序时,DBMS使用这个索引。当按照statecitycitystate排序和检索时,这个索引是没用的。

 

索引和键的区别:索引是DBMS改善执行效率的物理机制(硬件相关),键是DBMS用来强制引用完整性和通过视图更新的逻辑。

 

索引是存储在硬盘上的文件,因此占用空间。如果使用得当,索引可以成为避开连续读取大表、减少硬盘存取的主要手段。当创建索引时,它使用的空间是相关表占用空间的1.5倍。

当索引完成时,大多数空间将被释放。

 

聚集索引是键值逻辑顺序决定表中相应行的物理顺序的索引。非聚集索引中,索引的逻辑顺序和行存储在硬盘上的物理顺序是不同的。表只可以有一个聚集索引,聚集索引通常可以改进运行效率。它们会让搜索变得很快,插入、删除和更新变得很慢。

 

大多数索引采用平衡树,或B树实现。

 

使用DROP INDEX删除索引

在任何时候删除索引都不会影响表(或其它索引),如果删除了索引,所有SQL和应用程序会继续正常运行。

删除索引通常因为:

相关表很小或用户不再访问索引列。

在插入、更新和删除操作后DBMS维护索引所需的时间超过了索引加速检索而节约的时间。

 

无法删除DBMS为主键约束和唯一约束自动创建的索引。

分享到:
评论

相关推荐

    SQL 语法 SQL 总结 SQL教程

    SQL 基础 SQL 首页 SQL 简介 SQL 语法 SQL select SQL distinct SQL where SQL AND & OR SQL Order By SQL insert SQL update SQL delete SQL 高级 SQL Top SQL Like SQL 通配符 SQL In SQL Between ...

    (第二卷)Microsoft SQL Server 2008技术内幕:T-SQL语言基础

     《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》适合须要学习T-SQL的各级程序员和数据库专业人员,是他们快速掌握T-SQL的必备参考图书。 致谢 引言 第1章 T-SQL查询和编程基础 1.1 理论背景 1.2 ...

    (第一卷)Microsoft.SQL.Server.2008技术内幕:T-SQL语言基础

     《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》适合须要学习T-SQL的各级程序员和数据库专业人员,是他们快速掌握T-SQL的必备参考图书。 致谢 引言 第1章 T-SQL查询和编程基础 1.1 理论背景 1.2 SQL ...

    Microsoft SQL Server 2008技术内幕:T-SQL查询(第二卷)

    主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...

    SQL Server基础语句总结(有例子)

    最基础的SQLServer语句总结,包括触发器、索引、监听等。

    基于索引的SQL语句优化

    客服业务受到SQL语句的影响非常大...本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于索引的SQL语句优化的降龙十八掌,希望有一天你能用其中一掌来驯服客服业务中横行的‘恶龙’

    SQL入门常见问题总结与实用技巧介绍.docx

    SQL基础技巧 规范书写: 使用缩进和空行提高语句可读性。 尽量避免不必要的子查询,采用连接JOIN操作提高效率。 注释习惯: 对复杂查询添加注释说明逻辑,便于后期维护和他人理解。 使用标准SQL注释符,如-- 单行...

    oracle11g

    第一部分:SQL语言基础 第一章:关系型与非关系型数据库 第二章:SQL的基本函数 第三章:SQL的数据类型 第四章、WHERE子句中常用的运算符 第五章:分组函数 第六章:数据限定和排序 第七章:复杂查询(上)...

    基于索引的SQL语句优化之降龙十八掌

    本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于索引的SQL语句优化的降龙十八掌,希望有一天你能用其中一掌来驯服客服业务中横行的‘恶龙’。 这次传授的降龙十八掌,总纲...

    SQLServer2005数据库学习笔记

    笔记是本人学习SQLServer一段时间后重新整理出来的,适合有一些入门基础的人学习。 ├─01 安装及使用 │ SQLServer2005安装及使用.txt │ ├─02 常用函数 │ function.sql │ ├─03 建表、建库 │ create.sql ...

    基于索引的sql语句优化之降龙十八掌

    客服业务受到SQL语句的影响非常...本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于索引的SQL语句优化的降龙十八掌,希望有一天你能用其中一掌来驯服客服业务中横行的‘恶龙’。

    Microsoft+SQL+Server+2008技术内幕:T-SQL查询_源代码及附录 中文版

    主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...

    基于索引的SQL语句优化之降龙十八掌.docx

    客服业务受到SQL语句的影响非常大...本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于索引的SQL语句优化的降龙十八掌,希望有一天你能用其中一掌来驯服客服业务中横行的‘恶龙’

    Oracle数据库基于索引SQL优化方法的研究与实现

    在系统分析了Oracle数据库索引特点的基础上, 要注意的问题进行了总结,进行了一些新的探索和尝试, 对如何使用SQL语句的索引对数据库进行优化的实现方法中 提出了Oracle数据库SQL优化的其它注意问题。

    SQLServer2008技术内幕T-SQL查询包含源代码及附录A

    主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...

    SQL Server 2008数据库设计与实现

    第三部分深入探讨了SQL Server若干方面的技术细节,如数据保护、索引、并发访问等。通过将理论融入数据库实践,清晰地讲解了关系型数据库的设计原则,完整地展示了如何进行良好的关系型数据库设计,深入揭示了SQL ...

    精通SQL--结构化查询语言详解

    第1章 数据库与sql基础 1 1.1 数据库的基本概念 1 1.1.1 数据库的由来 1 1.1.2 数据库系统的概念 3 1.2 数据库系统的结构、组成及工作流程 3 1.2.1 数据库的体系结构 3 1.2.2 数据库系统的组成 4 1.2.3 ...

    数据库系统原理总结.pdf

    为3NF 3.SQL语⾔运⽤: 索引,视图,触发器,存储过程 索引:属于物理存储的路径概念 视图:是⼀种虚拟的表,是从若⼲基本表和其他视图构造出来的表。⽤来查询多个表 存储过程:通过创建存储过程,可以执⾏多条SQL...

Global site tag (gtag.js) - Google Analytics