精华内容
下载资源
问答
  • --查看索引 select * from all_indexes where table_name = '表名(大写)'; --查看索引和列名 select* from all_ind_columns where table_name = '表名(大写)'; --增加索引 create index I_IC_HANDRESERVE_...

    --查看索引

    select * from all_indexes where table_name = '表名(大写)';

    --查看索引和列名

    select* from all_ind_columns where table_name = '表名(大写)';

    --增加索引

    create index I_IC_HANDRESERVE_26 ON IC_HANDRESERVE(CBIZID);

    create index 索引名 ON 表名(字段名);

     

    展开全文
  • 为时间字段加索引

    千次阅读 2020-03-24 18:29:58
    文章目录为时间字段加索引(待更进)一、问题1、描述:日期不一致2、原因:时区不同3、解决方法: 时区修改二、datetime和varchar类型效率比较1、背景2、开始三、时间字段加索引1、聚集索引2、非聚集索引3、时间字段...

    为时间字段加索引(待更进)

    一、问题

    1、描述:日期不一致
    • 在centos7中运行docker,docker中运行mysql,在IDEA中将日期数据写入dates表中

    • dates表
      在这里插入图片描述

    • 插入日期数据

    @Test
    void contextLoads() {
      Date date = new Date(System.currentTimeMillis());
      System.out.println(date);   //Tue Mar 24 13:08:49 CST 2020
      questionMapper.insertdateTime(date);
    }
    
    • mysql中dates数据

    在这里插入图片描述

    2、原因:时区不同

    ​ 发现后台输入和数据库中的数据相差了8个小时,因为系统时区和docker中的mysql时区相差8个时区

    [root@localhost ~]# docker exec -it mysql01 /bin/bash
    root@1c202aea2496:/# mysql -uroot -p  
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 2604
    Server version: 5.7.29 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> show variables like '%time_zone%';
    +------------------+--------+
    | Variable_name    | Value  |
    +------------------+--------+
    | system_time_zone | UTC    |
    | time_zone        | SYSTEM |
    +------------------+--------+
    2 rows in set (0.01 sec)
    

    备注:

    • 在连接mysql时记得有"-u"参数,否则会出现Ignoring query to other database错误
    3、解决方法: 时区修改
    mysql> set global time_zone = '+8:00';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show variables like '%time_zone%';
    +------------------+--------+
    | Variable_name    | Value  |
    +------------------+--------+
    | system_time_zone | UTC    |
    | time_zone        | SYSTEM |
    +------------------+--------+
    2 rows in set (0.02 sec)
    
    • 再次插入日期数据
    Tue Mar 24 13:32:39 CST 2020
    
    • 数据查看
      在这里插入图片描述

    二、datetime和varchar类型效率比较

    ​ 我记得之前我是通过修改了my.conf文件,进而修改了docker中mysql的日期格式,起效果后,但是下次重启mysql时,启动不容器。打开错误日志后,告诉我my.conf里出现错误,我迫不得已将日期格式改了回来,将datetime改成了varchar类型,来存储时间。

    ​ 至于如何让docker中的mysql重启的,详见这里

    ​ 那么datetime和varchar在查找和内存消耗方面有什么区别吗?

    以下测试摘录于这里

    1、背景

    大家都知道数据库表字段设计得是否合理,对查询速度的快慢至关重要,下面做个简单的测试,看下差距有多大

    2、开始

    1、在数据库中新建两个表 test1(不合理的表)test2(合理表),两张表的 send_time 字段的类型不一样

    CREATE TABLE `test1` (
    	 `id` int(11) NOT NULL AUTO_INCREMENT,
    	`send_time` varchar(20) DEFAULT NULL,
    	PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
    CREATE TABLE `test2` (
    	 `id` int(11) NOT NULL AUTO_INCREMENT,
    	`send_time` datetime DEFAULT NULL,
    	PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
    

    2、新建存储过程,导入10 000 000 条测试数据(运行过程可能需要几分钟),运行结束后再将数据导入表test2保证两张表的数据一致

    BEGIN
    DECLARE i INT DEFAULT 0;
    START TRANSACTION;
    	WHILE i<10000000 DO
    INSERT INTO test1(send_time) VALUES(from_unixtime(1541302365+FLOOR(rand()*154130236),"%Y-%m-%d %H:%i:%s"));
    SET i=i+1;
    END WHILE;
    COMMIT;
    END
    
    

    3、查看表信息可得:
    在这里插入图片描述
    在这里插入图片描述

    结论:varchar 表字段占用存储空间 是 datetime 表的三倍左右
    

    4、查询速度比较

    	SELECT * FROM test1 WHERE send_time>'2019-03-17' and send_time<'2019-03-18';
    	SELECT * FROM test2 WHERE send_time>'2019-03-17' and send_time<'2019-03-18';
    	
    	结果比较
    	test1			test2
    	2.653s			1.833s
    	2.650s			1.866s
    
    

    5、给表添加索引(执行过程需要几分钟),并查询速度比较

    	-- 添加索引		
    	ALTER TABLE `test1` ADD INDEX `n_sendtime` (`send_time`) ;
    	ALTER TABLE `test2` ADD INDEX `n_sendtime` (`send_time`) ;
    
    	-- 查询速度比较:
    	SELECT * FROM test1 WHERE send_time>'2019-03-17' and send_time<'2019-03-18';
    	SELECT * FROM test2 WHERE send_time>'2019-03-17' and send_time<'2019-03-18';
    	
    	结果比较
    	test1			test2
    	0.084s			0.048s
    	0.062s			0.046s
    	0.062s			0.048s
    	0.066s			0.047s
    
    

    4、结论

    • 合理的字段类型不论对 查询速度 或是 数据存储 都至关重要
    • 时间字段用dateTime等时间类型,不要用varchar类型

    三、时间字段加索引

    1、聚集索引
    • 表记录的排列顺序和与索引排列顺序一致

    • 一个表中只能拥有一个聚集索引

    • 修改慢。为了保证表中记录的物理和索引顺序一致,在记录插入的时候,会对数据页重新排序

    • 聚集索引的叶节点就是最终的数据节点

    2、非聚集索引
    • 逻辑顺序与磁盘上行的物理存储顺序不同
    • 一个表中可以拥有多个非聚集索引
    • 非聚集索引的叶节仍然是索引节点,但它有一个指向最终数据的指针
    动作描述使用聚集索引使用非聚集索引
    列经常被分组排序
    返回某范围内的数据不应
    一个或极少不同值不应不应
    小数目的不同值不应
    大数目的不同值不应
    频繁更新的列不应
    外键列
    主键列
    频繁修改索引列不应
    3、时间字段是否适合加索引

    以下摘自此处

    • 可以建立索引的;至于建立聚集索引或者是非聚集索引,那要看你这个时间字段的具体情况以及使用或变更频繁程度。

    • 一般来说,适合建立聚集索引的要求:“既不能绝大多数都相同,又不能只有极少数相同”的规则。

    • 先说说一个误区:有人认为:只要建立索引就能显著提高查询速度。这个想法是很错误的。建立非聚集索引,确实,一般情况下可以提高速度,但是一般并不会达到你想要的速度。只有在适当的列建立适当的(聚集)索引,才能达到满意的效果

    • 考虑表空间和磁盘空间是否足够。我们知道索引也是一种数据,在建立索引的时候势必也会占用大量表空间。因此在对一大表建立索引的时候首先应当考虑的是空间容量问题。

    聚集索引和非聚集索引根本区别以及使用方式

    ​ 这就得看看项目中对该时间字段的具体操作了。

    ---- 待更新

    四、参考文档

    1、聚集索引和非聚集索引根本区别以及使用方式

    2、mysql索引的应用

    3、聚集索引和非聚集索引 简析与对比

    4、索引深入浅出(3/10):聚集索引的B树结构

    展开全文
  • 时间字段加索引

    万次阅读 2018-11-14 22:05:20
    微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:...

    一、深入浅出理解索引结构 

      实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别: 
      其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”。也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。 
      如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63页,“张”的下面是“弩”字,页面是390页。很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。 
      通过以上例子,我们可以理解到什么是“聚集索引”和“非聚集索引”。进一步引申一下,我们可以很容易的理解:每个表只能有一个聚集索引,因为目录只能按照一种方法进行排序。 

    二、何时使用聚集索引或非聚集索引 

    下面的表总结了何时使用聚集索引或非聚集索引(很重要):

    动作描述使用聚集索引使用非聚集索引
    列经常被分组排序
    返回某范围内的数据不应
    一个或极少不同值不应不应
    小数目的不同值不应
    大数目的不同值不应
    频繁更新的列不应
    外键列
    主键列
    频繁修改索引列不应

      事实上,我们可以通过前面聚集索引和非聚集索引的定义的例子来理解上表。如:返回某范围内的数据一项。比如您的某个表有一个时间列,恰好您把聚合索引建立在了该列,这时您查询2004年1月1日至2004年10月1日之间的全部数据时,这个速度就将是很快的,因为您的这本字典正文是按日期进行排序的,聚类索引只需要找到要检索的所有数据中的开头和结尾数据即可;而不像非聚集索引,必须先查到目录中查到每一项数据对应的页码,然后再根据页码查到具体内容。 

    三、结合实际,谈索引使用的误区 

      理论的目的是应用。虽然我们刚才列出了何时应使用聚集索引或非聚集索引,但在实践中以上规则却很容易被忽视或不能根据实际情况进行综合分析。下面我们将根据在实践中遇到的实际问题来谈一下索引使用的误区,以便于大家掌握索引建立的方法。 

    1、主键就是聚集索引 
      这种想法笔者认为是极端错误的,是对聚集索引的一种浪费。虽然SQL SERVER默认是在主键上建立聚集索引的。 
      通常,我们会在每个表中都建立一个ID列,以区分每条数据,并且这个ID列是自动增大的,步长一般为1。我们的这个办公自动化的实例中的列Gid就是如此。此时,如果我们将这个列设为主键,SQL SERVER会将此列默认为聚集索引。这样做有好处,就是可以让您的数据在数据库中按照ID进行物理排序,但笔者认为这样做意义不大。 
      显而易见,聚集索引的优势是很明显的,而每个表中只能有一个聚集索引的规则,这使得聚集索引变得更加珍贵。 
      从我们前面谈到的聚集索引的定义我们可以看出,使用聚集索引的最大好处就是能够根据查询要求,迅速缩小查询范围,避免全表扫描。在实际应用中,因为ID号是自动生成的,我们并不知道每条记录的ID号,所以我们很难在实践中用ID号来进行查询。这就使让ID号这个主键作为聚集索引成为一种资源浪费。其次,让每个ID号都不同的字段作为聚集索引也不符合“大数目的不同值情况下不应建立聚合索引”规则;当然,这种情况只是针对用户经常修改记录内容,特别是索引项的时候会负作用,但对于查询速度并没有影响。 
      在办公自动化系统中,无论是系统首页显示的需要用户签收的文件、会议还是用户进行文件查询等任何情况下进行数据查询都离不开字段的是“日期”还有用户本身的“用户名”。 
      通常,办公自动化的首页会显示每个用户尚未签收的文件或会议。虽然我们的where语句可以仅仅限制当前用户尚未签收的情况,但如果您的系统已建立了很长时间,并且数据量很大,那么,每次每个用户打开首页的时候都进行一次全表扫描,这样做意义是不大的,绝大多数的用户1个月前的文件都已经浏览过了,这样做只能徒增数据库的开销而已。事实上,我们完全可以让用户打开系统首页时,数据库仅仅查询这个用户近3个月来未阅览的文件,通过“日期”这个字段来限制表扫描,提高查询速度。如果您的办公自动化系统已经建立的2年,那么您的首页显示速度理论上将是原来速度8倍,甚至更快。 
      在这里之所以提到“理论上”三字,是因为如果您的聚集索引还是盲目地建在ID这个主键上时,您的查询速度是没有这么高的,即使您在“日期”这个字段上建立的索引(非聚合索引)。下面我们就来看一下在1000万条数据量的情况下各种查询的速度表现(3个月内的数据为25万条): 

    (1)仅在主键上建立聚集索引,并且不划分时间段:

    Select gid,fariqi,neibuyonghu,title from tgongwen

    用时:128470毫秒(即:128秒) 

    (2)在主键上建立聚集索引,在fariq上建立非聚集索引:

    select gid,fariqi,neibuyonghu,title from Tgongwen
    where fariqi> dateadd(day,-90,getdate())

    用时:53763毫秒(54秒) 

    (3)将聚合索引建立在日期列(fariqi)上:

    select gid,fariqi,neibuyonghu,title from Tgongwen
    where fariqi> dateadd(day,-90,getdate())

    用时:2423毫秒(2秒) 

      虽然每条语句提取出来的都是25万条数据,各种情况的差异却是巨大的,特别是将聚集索引建立在日期列时的差异。事实上,如果您的数据库真的有1000万容量的话,把主键建立在ID列上,就像以上的第1、2种情况,在网页上的表现就是超时,根本就无法显示。这也是我摒弃ID列作为聚集索引的一个最重要的因素。得出以上速度的方法是:在各个select语句前加:

    declare @d datetime
    set @d=getdate()

    并在select语句后加:

    select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())

    2、只要建立索引就能显著提高查询速度 
      事实上,我们可以发现上面的例子中,第2、3条语句完全相同,且建立索引的字段也相同;不同的仅是前者在fariqi字段上建立的是非聚合索引,后者在此字段上建立的是聚合索引,但查询速度却有着天壤之别。所以,并非是在任何字段上简单地建立索引就能提高查询速度。 
      从建表的语句中,我们可以看到这个有着1000万数据的表中fariqi字段有5003个不同记录。在此字段上建立聚合索引是再合适不过了。在现实中,我们每天都会发几个文件,这几个文件的发文日期就相同,这完全符合建立聚集索引要求的:“既不能绝大多数都相同,又不能只有极少数相同”的规则。由此看来,我们建立“适当”的聚合索引对于我们提高查询速度是非常重要的。 

    3、把所有需要提高查询速度的字段都加进聚集索引,以提高查询速度 
      上面已经谈到:在进行数据查询时都离不开字段的是“日期”还有用户本身的“用户名”。既然这两个字段都是如此的重要,我们可以把他们合并起来,建立一个复合索引(compound index)。 
      很多人认为只要把任何字段加进聚集索引,就能提高查询速度,也有人感到迷惑:如果把复合的聚集索引字段分开查询,那么查询速度会减慢吗?带着这个问题,我们来看一下以下的查询速度(结果集都是25万条数据):(日期列fariqi首先排在复合聚集索引的起始列,用户名neibuyonghu排在后列):

    (1)select gid,fariqi,neibuyonghu,title from Tgongwen where fariqi>''2004-5-5'' 

    查询速度:2513毫秒

    (2)select gid,fariqi,neibuyonghu,title from Tgongwen 
                where fariqi>''2004-5-5'' and neibuyonghu=''办公室''

    查询速度:2516毫秒

    (3)select gid,fariqi,neibuyonghu,title from Tgongwen where neibuyonghu=''办公室''

    查询速度:60280毫秒 

      从以上试验中,我们可以看到如果仅用聚集索引的起始列作为查询条件和同时用到复合聚集索引的全部列的查询速度是几乎一样的,甚至比用上全部的复合索引列还要略快(在查询结果集数目一样的情况下);而如果仅用复合聚集索引的非起始列作为查询条件的话,这个索引是不起任何作用的。当然,语句1、2的查询速度一样是因为查询的条目数一样,如果复合索引的所有列都用上,而且查询结果少的话,这样就会形成“索引覆盖”,因而性能可以达到最优。同时,请记住:无论您是否经常使用聚合索引的其他列,但其前导列一定要是使用最频繁的列。 

    四、其他书上没有的索引使用经验总结 

    1、用聚合索引比用不是聚合索引的主键速度快 
      下面是实例语句:(都是提取25万条数据)

    select gid,fariqi,neibuyonghu,reader,title from Tgongwen where fariqi=''2004-9-16''

    使用时间:3326毫秒

    select gid,fariqi,neibuyonghu,reader,title from Tgongwen where gid<=250000

    使用时间:4470毫秒 

    这里,用聚合索引比用不是聚合索引的主键速度快了近1/4。 

    2、用聚合索引比用一般的主键作order by时速度快,特别是在小数据量情况下

    select gid,fariqi,neibuyonghu,reader,title from Tgongwen order by fariqi

    用时:12936

    select gid,fariqi,neibuyonghu,reader,title from Tgongwen order by gid

    用时:18843 

      这里,用聚合索引比用一般的主键作order by时,速度快了3/10。事实上,如果数据量很小的话,用聚集索引作为排序列要比使用非聚集索引速度快得明显的多;而数据量如果很大的话,如10万以上,则二者的速度差别不明显。 

    3、使用聚合索引内的时间段,搜索时间会按数据占整个数据表的百分比成比例减少,而无论聚合索引使用了多少个:

    select gid,fariqi,neibuyonghu,reader,title from Tgongwen where fariqi>''2004-1-1''

    用时:6343毫秒(提取100万条)

    select gid,fariqi,neibuyonghu,reader,title from Tgongwen where fariqi>''2004-6-6''

    用时:3170毫秒(提取50万条)

    select gid,fariqi,neibuyonghu,reader,title from Tgongwen where fariqi=''2004-9-16''

    用时:3326毫秒(和上句的结果一模一样。如果采集的数量一样,那么用大于号和等于号是一样的)

    select gid,fariqi,neibuyonghu,reader,title from Tgongwen 
                where fariqi>''2004-1-1'' and fariqi<''2004-6-6''

    用时:3280毫秒 

    4、日期列不会因为有分秒的输入而减慢查询速度 
      下面的例子中,共有100万条数据,2004年1月1日以后的数据有50万条,但只有两个不同的日期,日期精确到日;之前有数据50万条,有5000个不同的日期,日期精确到秒。

    select gid,fariqi,neibuyonghu,reader,title from Tgongwen 
              where fariqi>''2004-1-1'' order by fariqi

    用时:6390毫秒

    select gid,fariqi,neibuyonghu,reader,title from Tgongwen 
                where fariqi<''2004-1-1'' order by fariqi

    用时:6453毫秒 

    五、其他注意事项 

      “水可载舟,亦可覆舟”,索引也一样。索引有助于提高检索性能,但过多或不当的索引也会导致系统低效。因为用户在表中每加进一个索引,数据库就要做更多的工作。过多的索引甚至会导致索引碎片。 
      所以说,我们要建立一个“适当”的索引体系,特别是对聚合索引的创建,更应精益求精,以使您的数据库能得到高性能的发挥。 
      当然,在实践中,作为一个尽职的数据库管理员,您还要多测试一些方案,找出哪种方案效率最高、最为有效。 

    展开全文
  • oracle 全文检索 oracle全文索引 多列字段检索,匹配多列字段搜索功能。
  • 只有一个多字段索引 PK_AV01 primary key (AV1, AV2,AV3) 我查下面的语句SELECT * FROM AV01 WHERE AV1='';能用上PK_AV01这个索引 假如我的索引是只有AV1字段的, PK_AV02 primary key (AV1) 那么我用PK...
  • 我们知道索引列如果出现null值会导致索引失效。具体情况如下: 表中数据如下: 可见storeid列有null值。...那该如何让该在字段有空值的情况下触发索引呢? 有两种方法: 1、建立函数索引 create index...

    我们知道索引列如果出现null值会导致索引失效。具体情况如下:

    表中数据如下: 可见storeid列有null值。

    当执行查询语句:select * from demo  where storeid= '10';时我们通过plsql的sql分析(F5触发)可以看到触发全表查询。

    那该如何让该在字段有空值的情况下触发索引呢?

    有两种方法:

    1、建立函数索引 create index xxx on 表名(列名,1)    ----相当于给默认值1

    2、建立函数索引create index xxx on 表名( decode(列名,null,1))   ---使用decode函数判空则给默认值1

    具体执行情况如下,

    第一种方法sql分析: 可以看到已经触发索引

    --建索引语句  create index demo_t on demo(storeid,0);

    --查询语句      select * from demo  where storeid= '10';

    第二种方法sql分析:也触发了索引

     --建索引语句 create index demo_t on demo(decode(storeid,null,0,storeid));

    --查询语句  select * from demo  where DECODE(STOREID,NULL,0,STOREID)= '10';

    总结:

    以上就是oracle中的函数索引解决空字段导致索引失效问题。

    展开全文
  • Oracle中空间字段创建索引

    千次阅读 2018-08-12 13:28:30
    //创建表 CREATE TABLE TestSpatial (  ID VARCHAR2(20) NOT NULL, ...//以表的空间字段创建索引 CREATE INDEX SPATIAL_IDX ON TestSpatial(location) INDEXTYPE IS MDSYS.SPATIAL_INDEX;  
  • oracle复合索引介绍(多字段索引) : http://ysj5125094.iteye.com/blog/1745367     (1).门牌号码:ROWID  欲介绍索引,先介绍一个概念:ROWID.在数据库中,每条记录都有自己的物理地址,叫做ROWID,包括所属的数据...
  • oracle复合索引介绍(多字段索引)

    千次阅读 2012-12-10 19:35:06
    oracle普通索引介绍(单字段索引) : http://ysj5125094.iteye.com/blog/1745354    首先,在大多数情况下,复合索引比单字段索引好.以税务系统的SB_ZSXX(申报类_征收信息表)为例,该表为税务系统最大的交易表.如果...
  • OracleE数据库的字段上建立索引的方法
  • oracle中为shape字段添加索引

    千次阅读 2018-10-06 09:55:11
    表名为oscline,shape字段的格式为sdo_geometry INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID) VALUES ('OSCLINE', 'shape', MDSYS.SDO_DIM_ARRAY (MDSYS.SDO_DIM_ELEMENT('X', ...
  • //创建空间字段索引 oracle spatial table //====================================== drop index index_sp_v_gbjj; drop index index_sp_v_xzq; drop index index_sp_v_ytfq; drop index index_sp_v_dltb; ...
  • Oracle加数据库索引原理

    千次阅读 2019-03-06 16:48:19
    使用索引很简单,只要能写创建表的语句,就肯定能写创建索引的语句,...很大一部份程序员对索引的了解仅限于到“加索引能使查询变快”这个概念为止。 为什么要给表加上主键? 为什么加索引后会使查询变快?...
  • 在进行数据查询的时候如果碰到大量数据集中的少量数据查询问题,可以通过在查询字段上新增索引提高查询速度 如果查询的结果集是大批量数据,那么就没必要使用索引了。 索引结构 举个例子:表A 列 a, b, c 新建一...
  • 哪些字段可以加索引

    千次阅读 2019-03-27 10:05:58
    2.经常与其他表进行连接的表,在连接字段上应该建立索引; 3.复合索引的几个字段是否经常同时以AND方式出现在Where子句中?如果是,则可以建立复合索引; 4.一个表如果是复合索引,尽量不要超过3个. 5.频繁进行...
  • 本文中所讨论的索引是B-Tree索引 在WHERE子句中最频繁使用的字段 ...ORACLE在UNIQUE和主键字段上自动建立索引, 所以无需对主键再创建索引 在选择性很差的字段上建索引只有在这个字段的值分布...
  • 在navicat(mysql版)里,我可以给表中的字段加索引,索引的作用就是,当我修改索引字段值的时候,引用索引字段值会自动更新.那么问题来了,plSql里有这种功能吗?或者说Oracle的管理工具里面有没有类似的功能? 举个例子来...
  • oracle查唯一索引有哪些字段

    千次阅读 2014-03-25 22:34:30
    select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and i.uniqueness='UNIQUE' and t.table_name='B2C_PSN_PAYTYPE'
  • NULL 博文链接:https://hackpro.iteye.com/blog/1845366
  • Oracle 19c和Oracle11g字段值重复多加唯一联合索引的区别 ** Oracle19c遇到字段值重复率比较高,利用主键和字段创建唯一联合索引,查询执行计划会走索引: 我们来看Oracle11g,同样创建唯一联合索引,11g版本就不会走索...
  • 今天接手一个新项目,是使用oracle数据库的.一开始没什么,但是在使用查询数据时,出现了问题. select username from USER 当我使用这条sql语句时,出现了 ORA-00904: “USERNAME”: invalid identifier错误. 一...
  • oracle加索引反而查询慢的原因

    千次阅读 2009-07-31 18:51:00
    下面看一下索引的一些原理,我们就可以知道或许你也犯了同样的索引反而速度更慢的错: 当用户从数据表中查询数据时,Oracle数据库提供了两种查询的方式。一是从表中读取每一行,就是大家常说的全表扫
  • select S.index_name from user_indexes s where s.table_name='TEACHERNUMBERSET' SELECT s.column_name FROM user_ind_columns S WHERE S.index_name='IDX_TEACHNUM' drop index IDX_TEACHNUM;...
  • Oracle-index索引解读

    万次阅读 2016-10-27 21:25:05
    概述Oracle-OLAP和OLTP解读Oracle-index索引解读Oracle-分区表解读Oracle-锁解读Oracle-等待事件解读Oracle-procedure/cursor解读 索引是数据库对象之一,用于加快数据的检索 索引是建立在表上的可选对象;索引的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 108,834
精华内容 43,533
关键字:

oracle字段加索引