本文目录一览

1,oracle中什么情况下用索引

如果查询时需要以该字段为查询条件,则需要创建索引。但是要注意,如果是需要将字段转换大小写后再匹配的,需要考虑建函数索引。另外,查询时如非特殊指定,不会同时使用同一个表的多个索引,故应该在能够根据查询条件最好筛选记录的字段上创建索引。另外,索引主要是为了提升查询效率,但是对插入和更新则会降低性能(对于更新特别频繁的字段,影响更明显),所以也不能随意创建索引。
当从大量数据中 按照条件检索出部分数据,或者例如select count(字段) 等仅仅需要该 字段所建立索引的查询时都需要 索引index
我觉得就是表的数据量很大 不利于查询和需要和其他表关联时需要建索引
表中的数据量很大,查询起来慢,可以给用于查询的条件加上索引 提高查询速度
1. 该字段不经常作为查询条件或者大量重复,比如性别。2. 数据频繁插入、删除、更新。3. 数据量太小也没必要建索引了。

oracle中什么情况下用索引

2,Mysql索引是如何实现的

添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引) mysql>ALTER TABLE `table_name` ADD UNIQUE ( `column` ) 3.添加INDEX(普通索引) mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 4.添加FULLTEXT(全文索引) mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 5.添加多列索引 mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
索引的创建很简单,可以网上查下相关信息,在这里只是说下索引需要注意的地方,索引分为很多不同的类型,一般咱们说的是b_tree索引,这里就只说b_tree,如果是哈希索引,可以网上找相关资料。 .b_tree适用于: 1.全值匹配 全值匹配是指和索引中的所有列进行匹配。 2.匹配最左前缀 匹配左左前缀即只使用索引的第一列 3.匹配列前缀 匹配某一列开头部分(指的第一列)。 4.匹配范围值 5.精确匹配某一列并范围匹配另一列 6.只访问索引的查询 只需访问索引,无需访问数据行。 .b_tree限制 1.如果不是按照索引的最左列开始查找,则无法使用索引。 2.不能跳过索引中的列。 3.如果查询中有某个列的范围查询,则其右边左右列无法使用索引优化查找。

Mysql索引是如何实现的

3,SQL的索引是什么意思用于什么情况下

索引主要用来提升数据检索速度,在数据量很大的时候很有用. 索引相当于图书馆的图书目录,你要找本书可以在图书目录上找到这本书在哪个书架第几本,这样明显比到书架去找书要快得多,索引就是这个道理. 索引在数据库优化当中起着非常重要的作用,像我的网站(http://www.99sc.cn)里面的 表基本上都建有索引, 这样可以使得我的网站数据在百万千万条数据的时候也不会很慢(只是现在数据很少,呵呵),如果没有索引估计会很惨. 以下是网上的介绍,看看吧: 索引简介 索引是表示数据的另一种方式,它提供的数据顺序不同于数据在磁盘上的物理存储顺序。索引的特殊作用是在表内重新排列记录的物理位置。索引可建立在数据表的一列上,或建立在表的几列的组合上。 回想一下图书馆中,存放着一架一架的图书。假设要找一本书,图书管理员视必要一架一架的寻找,直到找到想要的那本书为止。这样的查找肯定费时费力,那么管理员可以将所有的图书标题按字母分类建立索引卡片,按字母顺序放在不同的办公抽屉中,这样一架一架查找图书的过程就变成了在办公桌前抽屉中查询索引卡片了,很容易得到有关这本书的信息。 再进一步设想,图书管理员很勤快,他不仅按照图书标题字母分类,而且还按作者姓名和出版社分别建立了另外的索引卡片,这个过程将给借阅者在检索图书信息时以更大的灵活性。因此在一个数据表中是可以建立多个索引的。 在数据库中,对无索引的表进行查询一般称为全表扫描。全表扫描是数据库服务器用来搜寻表的每一条记录的过程,直到所有符合给定条件的记录返回为止。这个操作可以比作在图书馆中查书,从第一个书架的第一本书开始,浏览每一本书,直到发现所要的书为止。为了进行高效查询,可以在数据表上针对某一字段建立索引,由于该索引包括了一个指向数据的指针,数据库服务器则只沿着索引排列的顺序对仅有一列数据的索引进行读取(只建立一个索引)直至索引指针指向相应的记录上为止。由于索引只是按照一个字段进行查找,而没有对整表进行遍历,因此一般说来索引查找比全表扫描的速度快。 那么,是不是使用索引查询一定比全表扫描的速度快呢?答案是否定的。如果查询小型数据表(记录很少)或是查询大型数据表(记录很多)的绝大部分数据,全表扫描更为实用。例如,查询“性别”字段,其值只能是“男或女”,在其上建立索引的意义就不大,甚至不允许在布尔型、大二进制型(备注型、图像型等)上建立索引。 我的qq:505022441

SQL的索引是什么意思用于什么情况下

4,oracle数据库索引种类分别什么情况下使用

1. b-tree索引Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名。CREATE INDEX语句时,默认就是在创建b-tree索引。没有特别规定可用于任何情况。2. 位图索引(bitmap index)位图索引特定于该列只有几个枚举值的情况,比如性别字段,标示字段比如只有0和1的情况。3. 基于函数的索引比如经常对某个字段做查询的时候是带函数操作的,那么此时建一个函数索引就有价值了。4. 分区索引和全局索引这2个是用于分区表的时候。前者是分区内索引,后者是全表索引5. 反向索引(REVERSE)这个索引不常见,但是特定情况特别有效,比如一个varchar(5)位字段(员工编号)含值(10001,10002,10033,10005,10016..)这种情况默认索引分布过于密集,不能利用好服务器的并行但是反向之后10001,20001,33001,50001,61001就有了一个很好的分布,能高效的利用好并行运算。6.HASH索引HASH索引可能是访问数据库中数据的最快方法,但它也有自身的缺点。集群键上不同值的数目必须在创建HASH集群之前就要知道。需要在创建HASH集群的时候指定这个值。使用HASH索引必须要使用HASH集群。
Oracle数据库常见的索引种类有:B树索引、位图索引、反向键索引、基于函数的索引、B树索引:如果表包含的数据非常多,并且经常在WHERE子句中引用某列或某几列,则应该基于该列或这几个列建立B树索引;位图索引:当列的基数很低的时,当一个列的基数小于1%时,适用于位图索引;反向索引:如果用户使用序列在表中输入记录,则反向键索引首先指向每个列键值的字节,然后在反向后的新数据上进行索引;但进行反向键索引时却是非递增的,这意味如果将其添加到子叶节点,可能会在任意的子叶节点中进行。基于函数的索引:当数据库中遇到对字符大小写很敏感,如果用户不能确定输入数据的格式,甚至会产生一个严重的错误;这时候创建基于函数的索引就比较合适了;
问题太多了吧?逻辑上:Single column 单列索引Concatenated 多列索引Unique 唯一索引NonUnique 非唯一索引Function-based函数索引Domain 域索引物理上:Partitioned 分区索引NonPartitioned 非分区索引B-tree:Normal 正常型B树Rever Key 反转型B树 Bitmap 位图索引create index name on:就是普通的 非唯一索引 或 函数索引 主键会给分配索引,外键不会自动分配索引,需要自己创建
游标 数据库指针类似于字处理程序中的指针当你按下方向键时游标依次从各行文本中 滚动按一下向上键游标向上跳一行而按pageup 和pagedown 则会向一次翻阅几行数 据库游标的操作也类似 数据库游标允许你选择一组数据通过翻阅这组数据记录通常被称为数据集检查 每一个游标所在的特定的行你可以将游标和局部变量组合在一起对每一个记录进行检查 当游标移动到下一个记录时来执行一些外部操作 游标的另一个常见的用法是保存查询结果以备以后使用一个游标结果集是通过执行 select 查询来建立的如果你的应用程序或过程需要重复使用一组记录那么第一次建 立游标以后再重复使用将会比多次执行查询快得多而且你还有在查询的结果集中翻阅的好处1。需要顺序的逐条处理记录数据; 2。记录数不应该很多。

5,oracle数据库什么情况下创建索引比较好

索引就好象一本字典的目录。凭借字典的目录,我们可以非常迅速的找到我们所需要的条目。数据库也是如此。凭借Oracle数据库的索引,相关语句可以迅速的定位记录的位置,而不必去定位整个表。   虽然说,在表中是否创建索引,不会影响到Oracle数据库的使用,也不会影响数据库语句的使用。这就好像即使字典没有目录的话,用户仍然可以使用它一 样。可是,若字典没有目录,那么可想而知,用户要查某个条目的话,其不得不翻遍整本字典。数据库也是如此。若没有建立相关索引的话,则数据库在查询记录的 时候,不得不去查询整个表。当表中的记录比较多的时候,其查询效率就会很低。所以,合适的索引,是提高数据库运行效率的一个很好的工具。   不过,并不是说表上的索引越多越好。过之而不及。故在数据库设计过程中,还是需要为表选择一些合适的索引。宁缺勿滥,这是建立索引时的一个遵循标准。在 理论上,虽然一个表可以设置无限的索引。但是,数据库管理员需要知道,表中的索引越多,维护索引所需要的开销也就越大。每当数据表中记录有增加、删除、更 新变化的时候,数据库系统都需要对所有索引进行更新。故数据库表中的索引绝对不是多多益善。具体来说,在索引建立上,笔者对大家有如下建议。  建议一:在基数小的字段上要善于使用位图索引。create bitmap index index_name on table_name (column_name);  基数是位图索引中的一个基本的定义,它是指数据库表中某个字段内容中不重复的数值。如在员工信息表中的性别字段,一般就只有男跟女两个值,所以,其基数为2;婚姻状况字段的话,则其只有已婚、未婚、离婚三种状态,其基数就为3;民族一览内也是只有有限的几个值。  对于要查询基数小的字段,如现在用户想查找所有婚姻状况为已婚的女性时,利用位图索引可以提高查询的效率。这主要是因为标准索引是通过在索引中保存排序过的索引列以及对应的ROWID来实现的。若我们在基数小的列上建立标准索引的话,则其会返回大量的记录。   而当我们在创建位图索引的时候,在Oracle会对整个表进行扫描,并且会为索引列的每个取值建立一个位图。若内容相同,则在位图上会以一个相同的数字 表示。此时,若这个字段的基数比较小的话,则若需要实现对整个字段的查询的话,效率就会非常的高。因为此时,数据库只要位图中数字相同的内容找出来即可。   除了在数据表某列基数比较小的情况下,采用位图索引外,我们往往在一些特殊的情况下,也会建议采用位图索引。最常见的情况是,在Where限制条件中, 若我们多次采用AND或者OR条件时,也建议采用位图索引。因为当一个查询饮用了一些部署了位图索引的列的时候,这些位图可以很方便的与AND或者Or 运算符操作结合以快速的找出用户所需要的记录。  但是,这里要注意,不是在条件语句中包含运算符的时候,采用位图索引都能够提供比较高的 效率。一般来说,只有AND 或者OR运算符的时候,位图索引才会比较具有优势。若此时用户采用大于号或者不等于号作为条件语句中的限制条件的时候,则往往采用标准索引具有更大的优 势。  所以,笔者在数据库设置中,一般只有在三种情况下才采用位图索引。一是列的基数比较小,而有可能需要根据这些字段的内容查找相关的 记录;二是在条件语句中,用到了AND或者OR运算符的时候。除了这两种情况外,最好能够采用其他适合的索引。第三种情况是,需要用到NULL作为查询的 限制条件。因为标准查询一般情况下,会忽略所有的NULL值列。也就是说,若需要查询所有没有身份证号码的员工的信息的时候,标准索引并不能够起到加 速查询速度的作用。此时,就需要采用位图索引。因为位图索引会记录相关的NULL值列信息。  建议二:创建索引的一些限制条件。  并不说,表或者列建立的索引越多越好。相反,索引建的越多,有时会反而会影响数据库运行的整体性能。所以,在建立索引的时候,仍然会有一些限制条件。   一是不要对一些记录内容比较少的表建立索引。在一个应用系统设计的时候,如设计一个ERP系统的数据库,其虽然有几千张表。但是,并不是每张表都有大量 记录的。相反,其中有近一半左右的数据表,可能其存储的数据不会超过百条。如员工登陆帐户密码表、企业部门信息表等等。对于这些记录内容比较少的表,我们 建立最好不要为其建立索引。无论是表上的,还是字段上,都不要建立索引。  二是若表中的内容比较大,但是,这个表基本上不怎么查询的时 候,则只需要在表上建立索引即可;而不需要在字段上建立索引。如现在在ERP系统中,有一张表是AD_Table。其存储的是这个数据库中相关表的信 息。这张表只有在数据库设计的时候才会用到。故这张表中的记录虽然比较多,但是由于用户用的比较少,所以,一般没有必要为这张表建立列级别上的索引。而直 接用表索引来代替。  三是在一些NULL字段上,要根据实际情况来判断是否要建立索引。如现在有一张人事档案的表格,其上面有两个字段, 分别为身份证号码与地区。有时会为了某个原因,企业需要所有员工都在系统中登记他们的身份证号码,以方便他们办工资卡、社会保险等等。所以人事管 理可能需要经常的查询系统,看看有没有没有身份证号码的员工信息。此时,就需要利用条件IS NULL来查询我们所需要的记录。故为了提高查询效率,若某个记录可能为空,并且经常需要以NULL为条件进行查询的时候,则最好给这个字段添加一个索 引,并且最好建立位图索引。相反,若虽然可能会以NULL这个条件作为查询的限制语句,但是,用的不是很多的时候,则就没有必要为其建立索引。  建议三:多表连接查询的索引设计。   如现在有一个人事管理系统。人事经理想知道员工的社保缴纳情况。他需要知道员工的姓名、职务、户籍性质(农民户口跟居民户口费用不一样)、缴纳的情况等 等。但是,这些信息包含在不同的表中。因为为了提高数据库的性能,在表中存储的可能只是某些序号,而不是具体的内容。如在社保表中,存储的是员工对应的编 号,而不是员工的名字。所以,要得到这份报表的话,就可能需要关联员工基本信息表、公司组织结构表等表格,才能够查询到用户所需要的内容。  为此,就需要利用Join语句,把这些表格关联起来。为了提高数据库的查询效率,这些用来关联的字段,最好能够建立索引。这可以显著的提高查询的速度。  建议四:在表的更新速度与查询速度之间寻求一个平衡点。  众所周知,索引本身并不影响数据库的使用,其主要是为了提高数据库的查询效率。但是,由于当数据库的表中的数据更新的时候,包括记录的增加、删除、更改等等,都会对虽有的索引进行更新。  很明显,索引虽然可以提高查询速度。但是,也会对一些表的更新操作产生不良的影响。当在表中建立的索引越多,这个不利影响也会越大。故数据库管理员在设置索引的时候,还需要注意,在这两个之间需要一个均衡点。  按照一般的理论来说,当某个表多数用来查询、更新相对来说比较上的话,则要多多采用索引。相反,当某个表记录更新居主导,查询相对来说比较少的话,则不要建立太多的索引,避免对更新的速度差生不利影响。  在实际工作中,若某个表频繁的被视图所调用的话,则最好就好设置比较多的索引了。
1. b-tree索引oracle数据库中最常见的索引类型是b-tree索引,也就是b-树索引,以其同名的计算科学结构命名。create index语句时,默认就是在创建b-tree索引。没有特别规定可用于任何情况。2. 位图索引(bitmap index)位图索引特定于该列只有几个枚举值的情况,比如性别字段,标示字段比如只有0和1的情况。3. 基于函数的索引比如经常对某个字段做查询的时候是带函数操作的,那么此时建一个函数索引就有价值了。4. 分区索引和全局索引这2个是用于分区表的时候。前者是分区内索引,后者是全表索引5. 反向索引(reverse)这个索引不常见,但是特定情况特别有效,比如一个varchar(5)位字段(员工编号)含值(10001,10002,10033,10005,10016..)这种情况默认索引分布过于密集,不能利用好服务器的并行但是反向之后10001,20001,33001,50001,61001就有了一个很好的分布,能高效的利用好并行运算。6.hash索引hash索引可能是访问数据库中数据的最快方法,但它也有自身的缺点。集群键上不同值的数目必须在创建hash集群之前就要知道。需要在创建hash集群的时候指定这个值。使用hash索引必须要使用hash集群。

文章TAG:数据  数据库  数据库索引  实现  数据库索引实现有哪些情况  
下一篇