索引的基本原理

1. 索引的基本概念

  索引对性能的改进程度取决于数据的选择性以及数据在表的数据块中的分布方式。

  一般来说,索引可以提高查询的性能。select语句、update、delete命令、where子句的性能可以借助索引获得提高。

  但是增加索引会降低Insert语句的性能。索引列上的update操作会比没有索引慢很多,所以数据库必须管理对表的索引的改动。另外,大量行的delete操作也会由于表中存在索引而变慢。

2.不可视索引

  通过使用不可视索引,可以通过使索引不可见,临时“关闭”索引来查看查询在没有它们时的性能,由于不可视索引依然被维护,如果需要的话,可以“打开”它们。

  --使得索引不可视

  create index [index_name] on table_name(column_name) invisible;

  alter index [index_name] invisible;

  --使得索引可视

  alter index [index_name] visible;

3.组合索引

  索引包含多个列,称之为“组合索引”或“复合索引”。

  在没有引入跳跃式扫描功能之前,只有当索引中的前导列出现在where子句中,查询才能使用索引。Oracle 9i引入跳跃式扫描功能,即使没有使用前导列,优化器也可能会选择使用该索引,也可能选择索引快速全扫描或者全表扫描。

4.索引抑制

  

时间: 2024-10-11 21:43:32

索引的基本原理的相关文章

[转载]MySQL索引原理与慢查询优化

好文,以防丢失,故转之,另对排版做简单优化.原文地址:http://ourmysql.com/archives/1401 索引目的 索引的目的在于提高查询效率,可以类比字典,如果要查"mysql"这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql.如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者w开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成? 索引原理 除了词典,生活中随处可见索引的例子,如火车站的

MySQL索引原理及慢查询优化

原文:http://tech.meituan.com/mysql-index.html MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”.“SQL语句优化”.“了解数据库原理”等要求.我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一

MySQL索引原理及慢查询优化(转)

原文:http://tech.meituan.com/mysql-index.html MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”.“SQL语句优化”.“了解数据库原理”等要求.我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一

MySQL索引原理及慢查询优化 转载

原文地址: http://tech.meituan.com/mysql-index.html MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”.“SQL语句优化”.“了解数据库原理”等要求.我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,

美团网:MySQL索引原理及慢查询优化

转自  http://www.searchdatabase.com.cn/showcontent_86230.htm MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”.“SQL语句优化”.“了解数据库原理”等要求.我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多

sqlite索引的原理

引言 这篇文章,里面讲到对于一个41G大小.包含百万条记录的数据库进行查询操作,如果利用了索引,可以把操作耗时从37s降到0.2s. 那么什么是索引呢?利用索引可以加快数据库查询操作的原理是什么呢? 索引的基本原理 数据库提供了一种持久化的数据存储方式,从数据库中查询数据库是一个基本的操作,查询操作的效率是很重要的. 对于查询操作来说,如果被查询的数据已某种方式组织起来,那么查询操作的效率会极大提高. 在数据库中,一条记录会有很多列.如果把这些记录按照列Col1以某种数据结构组织起来,那么列Co

MySQL索引背后的数据结构及最左原则

MySQL索引原理 ##索引目的索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql.如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者ze开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成? ##索引原理除了词典,生活中随处可见索引的例子,如火车站的车次表.图书的目录等.它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把

MySQL六:索引原理与慢查询优化

阅读目录 一 介绍 二 索引的原理 三 索引的数据结构 三 MySQL索引管理 四 测试索引 五 正确使用索引 六 查询优化神器-explain 七 慢查询优化的基本步骤 八 慢日志管理 九 参考博客 一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重.说起加速查询,就不得不提到索引了. 什么是索引? 索引在MySQL中也叫做"

论索引的重要性

1.以前虽然知道索引可以优化查询速度.但是一直没有怎么重视.所以建表的时候也基本不会太多考虑索引的事. 2.至从遇到一张有50多万条数据的表里查数据 select m.miid from MemberInfo  m  where m.userid=301212 起先这个where 条件的userid字段 是没有加索引的.执行时间11秒左右. 3.加上索引之后.该语句执行时间0.016秒,这速度的提升是相当可怕的. 这次的经历让我重新认识了索引的重要性.再次记录 以下附数据库查询优化 ------