精华内容
下载资源
问答
  • 索引的定义、分类及使用

    千次阅读 2018-09-27 14:34:36
    索引的常见类型有什么? 索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的...

    索引

    1、什么是索引?索引的常见类型有什么?

    索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。

    建设原则:

     1、索引应该经常建在Where 子句经常用到的列上。如果某个大表经常使用某个字段进行查询,并且检索行数小于总表行数的5%。则应该考虑。

     2、对于两表连接的字段,应该建立索引。如果经常在某表的一个字段进行Order By 则也经过进行索引。

     3、不应该在小表上建设索引。

     

     

    2、分类:我们主要介绍常见的聚集索引和非聚集索引

    聚集索引:对正文内容按照一定规则排列的目录称为聚集索引。

    比如图书馆新进了一批书。那么这些书需要放到图书馆内。书如何放呢?一般都有一个规则,杂志类的放到101房间,文学类的放到102房间,理工类的放到103房间等等。这些存储的规则决定了每本书应该放到哪里。而这个例子中聚集索引为书的类别。 
         

    非聚集索引:目录自己按照一定规则排列,正文自己按照另一种规则排列,目录主要是保存对正文的一个映射关系,这种称为非聚集索引。

    继续使用上述提到的例子: 同学如果想去图书馆找一本书,而不知道这本书在哪里?那么这个同学首先应该找的就是检索室。对于要查找一本书来说,在检索室查是一个非常快捷的的途径了。但是,在检索室中你查到了该书在XX室XX书架的信息。但是你的查询并没有结束,你仅仅找到了目的书的位置信息,你还要去该位置去取书。
    对于这种方式来说,你需要两个步骤: 
           (1)查询该记录所在的位置。 
           (2)通过该位置去取要找的记录。

     

    3、索引的优点和缺点

    优点:大大加快数据的检索速度(主要原因)。

    缺点:创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加

    索引需要占物理空间。

     1、索引主要进行提高数据的查询速度。 当进行DML时,会更新索引。因此索引越多,则DML越慢,其需要维护索引。 因此在创建索引及DML需要权衡。

    创建索引:
     单一索引:Create Index <Index-Name> On <Table_Name>(Column_Name);

     复合索引: Create Index i_deptno_job on emp(deptno,job); —>emp表的deptnojob列建立索引。

      select * from emp where deptno=66 and job='sals' ->走索引。

      select * from emp where deptno=66 OR job='sals' ->将进行全表扫描。不走索引

      select * from emp where deptno=66 ->走索引。

      select * from emp where job='sals' ->进行全表扫描、不走索引。

      如果在where 子句中有OR 操作符或单独引用Job (索引列的后面列) 则将不会走索引,将会进行全表扫描。

     

    4、索引的创建和使用

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

    注:对于主键或者唯一键,server会自动加索引。

    索引使用方法:不用特意使用,Oracle会自动处理。

    1. 删除索引

    DROP INDEX indexname;


     

    展开全文
  • sql索引的定义以及用法总结

    千次阅读 2015-07-28 12:26:52
    索引定义:SQL Server允许用户在表中创建索引,指定按某列预先...1:唯一索引:唯一索引不允许两行有相同的索引值(其实也就是说唯一索引的这一列,每个值都是唯一的); 例如,如果在stuInfo表中的学员员身份证号(stu

    索引定义:SQL Server允许用户在表中创建索引,指定按某列预先排序,从而大大提高查询速度(类似于汉语词典中按照拼音或者字画查找)。


    索引作用:通过索引可以大大的提高数据库的检索速度,提高数据库的性能。


    索引的类型:

    1:唯一索引:唯一索引不允许两行有相同的索引值(其实也就是说唯一索引的这一列,每个值都是唯一的);

    例如,如果在stuInfo表中的学员员身份证号(stuID) 列上创建了唯一索引,则所有学员的身份证号不能重复。


    2:主键索引:定义表主键的时候,会自动创建主键索引(其实主键索引就是唯一索引的特例),主键索引要求每一个值都是唯一的且非空。

    主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。


    3:聚集索引:表中各行的物理顺序与键值的逻辑顺序相同,每个表只能有一个。

    在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。例如:汉语字(词)典默认按拼音排序编排字典中的每页页码。拼音字母a,b,c,d……x,y,z就是索引的逻辑顺序,而页码1,2,3……就是物理顺序。默认按拼音排序的字典,其索引顺序和逻辑顺序是一致的。即拼音顺序较后的字(词)对应的页码也较大。如拼音“ha”对应的字(词)页码就比拼音“ba” 对应的字(词)页码靠后。


    4:非聚集索引:非聚集索引指定表的逻辑顺序,数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。

    如果不是聚集索引,表中各行的物理顺序与键值的逻辑顺序不匹配。聚集索引比非聚集索引(nonclustered index)有更快的数据访问速度。例如,按笔画排序的索引就是非聚集索引,“1”画的字(词)对应的页码可能比“3”画的字(词)对应的页码大(靠后)。

    提示:SQL Server中,一个表只能创建1个聚集索引,多个非聚集索引。设置某列为主键,该列就默认为聚集索引



    索引的优缺点:


    优点:加快访问速度;

    加强行的唯一性


    缺点:带索引的表在数据库中的存储需要更多的空间;


    创建索引的原则:


    下列情况下可以使用索引:

    该列频繁用于搜索;

    该列用于对数据进行排序;



    下列情况下避免使用索引:

    列中仅仅包含几个不同的值;

    表中仅包含几行。为小型表创建索引可能不太划算,因为SQLServer在索引中搜索数据所花的时间比在表中逐行搜索所花的时间更长。

    展开全文
  • mysql数据库表主键、外键、唯一键、主键索引、唯一索引、普通索引

    mysql数据库表的主键、外键、唯一键、主键索引、唯一索引、普通索引:

    一:什么是主键
    主键,(也叫主关键字primary key),由表中的一个或多个列组成,用于唯一性标识数据表中的某一条记录。
    一个表最多只有一个主键。 主键可以由一个字段(列),也可以由多个字段(列)组成,分别称为单列主键(我们经常用到的)或联合主键(复合主键/多列主键)。
    单列主键,它的那一个字段不可以为空;联合主键,它的多个字段都不可以为空。
    总结:一个表最多只有一个主键。主键不可以重复,不可以为空。
    二:什么是外键?**
    外键,也叫外关键字(foreign key)。
    如果一个A表中的主键,在另一个B表中存在,那么这个A表的主键称为B表的外键。由此可见,外键表示了两个表之间的联系。以另一个表的外键作主键的表被称为主表,具有此外键的表被称为主表的从表。
    三:什么是唯一键?**
    唯一键,(unique key),由表中的一个或多个列组成。
    一个表可以有多个唯一键。(unique key)。 每个唯一键:可以由一个字段(列),也可以由多个字段(列)组成。
    总结:一个表可以有多个唯一键。唯一键不可以重复,可以为空(最多只有一个为null,因为唯一不重复的原因)。
    四:什么是主键索引?**

    五:什么是唯一索引?**
    唯一索引,(unique index)。
    唯一索引,一种索引类型,不允许具有索引值相同的行,从而禁止重复的索引或键值。系统在创建该索引时检查是否有重复的键值,并在每次使用 INSERT 或 UPDATE 语句添加数据时进行检查。
    要对一个表建立唯一索引,可以使用关键字UNIQUE。
    唯一索引创建的时候,例如,create unique index 索引名 on 表名 (列名);

    六:什么是普通索引?**
    普通索引,(normal index)。
    普通索引创建的时候,直接例如,create index 索引名 on 表名 (列名);

    备注:


    mysql数据库,建表的时候,建立主键,系统不会默认为主键创建唯一索引。
    (可以后期手动对主键的列创建唯一索引)
    (你说系统没有默认对主键创建唯一索引吧,但是,为什么用explain查询sql执行计划的时候,还看到用到了索引了呢???求回复!!!!!!!!!!!!!!!!)
    oracle数据库,建表的时候,建立主键,系统同时会默认为主键创建唯一索引。
    (后期手动对主键的列创建唯一索引会报错!)



    mysql在建立表的外键的时候有一个要求:建立外键的列必须有索引。否则报错。
    但是Oracle不需要建立index,直接可以建立外键,不会报错,执行通过;

    展开全文
  • oracle 索引的定义及使用

    千次阅读 2011-11-27 15:28:45
    2 索引 ... 数据库中索引的概念与书索引的概念非常类似,  不同之处在于数据库索引用来在表中查找特定的行。  索引缺点:  向表中“添加/删除”行时,必须花费额外的时间来更新该行的索引。
    2 索引
           目标是为了提高查询的速度,当用户对查询速度不满意而需要对数据库的性能进行调校时,优先考虑建立索引。
           数据库中索引的概念与书索引的概念非常类似,
           不同之处在于数据库索引用来在表中查找特定的行。
           索引缺点:
                          向表中“添加/删除”行时,必须花费额外的时间来更新该行的索引。
           创建索引的时机:
                          当需要从大表中检索少数几行时,都应该对列创建索引。
           基本准则:
                          当任何单个查询要检索的行<=整个表行数的10%时,索引就非常有用。
           索引的候选列:
                          应该是用来存储很大范围的值的列
           自动创建索引:
                          表的主键和唯一键将自动创建索引
    2.1 语法
           create [unique] index 索引名 -------unique指定索引列中的值是唯一的,索引名建议以idx打头
           on 表名(列1, 列2... ...) --------可以对多列创建索引,这种索引称为“复合索引”
           [tablespace 表空间名]; --------省去后,索引将被存储到用户的默认表空间中
           提示:
           出于性能方面的原因,通常应该将索引与表存储到不同的表空间中
           示例:
           create index idx_customers_lastname on customers(last_name);
    2.2 查询索引和索引列的信息
          select * from user_indexes where table_name in('CUSTOMERS', 'EMPLOYEES');
          select * from user_ind_columns where table_name in('CUSTOMERS', 'EMPLOYEES');
    2.3 修改索引
          alter index 索引名 rename to 新索引名
    2.4 删除索引
          drop index 索引名
    展开全文
  • oracle 11g导出表和索引的定义

    千次阅读 2016-05-10 15:05:36
    先将表信息导入到2.dmp expdp test/test directory=dump_0420 dumpfile=2.dmp tables=A,B logfile=lcam_0421.log  然后将2.dmp导入,形成11.sql impdp test/test directory=dump_0420 dumpfile=2.dmp ...
  • 定义 建立一个反向索引将把每个列键值(each column key value)按字节反向过来,对于组合键,列顺序被保留,但每个列字节都作了反向 例如: 表某一列内容 …… 1234 1235 1236 1237
  • <br />索引其实关键目的是为了加快检索速度而建立,所以,怎么用索引是数据库系统本身事情,作为数据库设计或使用者,设计并创建好索引然后体验加上索引查询变快感觉就行了。所以,索引怎么用就变为...
  • C#索引器-索引的定义

    千次阅读 2010-11-22 16:01:00
    索引定义类似于属性,但其功能与属性并不...定义索引语法如下: <访问修饰符> 类型名称 this [类型名称 参数名] {  get{//获得属性代码}   set{ //设置属性代码} }<br /
  • SQL数据类型、基本表的定义索引定义标签(空格分隔): 未分类前言由于最近做消息中心后台开发,需要进行数据库的操作,在编写SQL(mybatis)上略感吃力,于是复习一下大学时代所学习的数据库的相关基础知识,直接...
  • 索引

    2021-03-18 23:25:30
    MySQL官方对索引的定义为:索引Index是帮助MySQL高效获取数据的数据结构。 索引的本质:索引是数据结构。 数据库查询是数据库的最主要功能之一,希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询...
  • 【转】C#索引器-索引的定义

    千次阅读 2010-07-31 13:29:00
    索引定义类似于属性,但其功能与属性并不...定义索引语法如下: <访问修饰符> 类型名称 this [类型名称 参数名] {  get{//获得属性代码}   set{ //设置属性代码} }
  • c#定义索引

    2018-08-02 10:15:01
    不同的是,属性值的定义要求返回或设置一个特定的数据成员,而索引的定义要求返回或设置的是某个对象实例的一个值,即索引器将实例数据切分成许多部分,然后通过一些方法去索引、获取或是设置每个部分。...
  • 定义MySQL全文搜索FULLTEXT索引

    千次阅读 2016-10-25 22:17:19
    在本教程中,将学习如何定义用于在MySQL中执行各种全文搜索全文索引。在表列中执行全文搜索之前,必须为其数据编制创建索引。当列数据更改时,MySQL将重新编制索引。在MySQL中,全文索引是一种名称为FULLTEXT...
  • 密集索引和稀疏索引的区别

    万次阅读 2019-01-03 20:59:43
    密集索引的定义:叶子节点保存的不只是键值,还保存了位于同一行记录里的其他列的信息,由于密集索引决定了表的物理排列顺序,一个表只有一个物理排列顺序,所以一个表只能创建一个密集索引 稀疏索引:叶子节点仅...
  • C#接口定义,索引的定义

    千次阅读 2010-10-31 21:31:00
    其中索引的数据类型必须与索引器的索引类型相同。例如: Z z=new z(); z[0]=100; z[1]=101; Console.WriteLine(z[0]); 表示先创建一个对象 z ,再通过索引来引用该对象中的数组元素。 3 、接口...
  • Kibana定义索引模式

    万次阅读 2018-08-09 17:32:49
    索引模式可以匹配单个索引的名称,或者包含通配符(*)以匹配多个索引。 例如,Logstash通常以logstash-YYYY.MMM.DD格式创建一系列索引。 要浏览2018年5月的所有日志数据,您可以指定索引模式logstash-2018.05 *。...
  • 索引 - 索引最大大小

    千次阅读 2019-05-17 15:13:29
    这排除了在非聚集索引的定义中包括的非键列. 计算索引键的大小 若要计算索引键的大小, 请按下列步骤执行操作。 显示索引将依据的表列的属性, 可以使用 sys.columns 目录视图执行此操作. 求索引键中将定义的每一列...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,439
精华内容 12,575
关键字:

索引的定义