精华内容
下载资源
问答
  • Oracle+SQL优化之使用索引提示一例
  • oracle sql语句索引使用情况 查询

    千次阅读 2019-05-17 09:52:20
    生成执行计划 explain plan for select * from xxxx where xxx = xxx; 查看索引使用明细 select * from table(dbms_xplan.display);
    • 生成执行计划
      explain plan for select * from xxxx where xxx = xxx;
    • 查看索引使用明细
      select * from table(dbms_xplan.display);
    展开全文
  • 查看oracleSQL是否使用索引

    千次阅读 2014-06-04 15:08:09
    到底用没用索引,你可以从v$sqlaera中找到你的语句对应的hash_value,然后从v$sql_plan中找到语句的执行计划,通过执行计划确认你的语句是不是使用索引。 具体语句你可以类似如下写法: select hash_value,sql...

    到底用没用索引,你可以从v$sqlaera中找到你的语句对应的hash_value,然后从v$sql_plan中找到语句的执行计划,通过执行计划确认你的语句是不是使用了索引。
    具体语句你可以类似如下写法:

    select hash_value,sql_text from v$sqlarea where upper(sql_text) like '%你需要查找的sql语句的特征片段%'

    select * from v$sql_plan where hash_value = 上一句查到的hash_value


    select hash_value,sql_text from v$sqlarea where sql_text like '%select username from zauser%'
    select * from v$sql_plan where hash_value=3172437944

    展开全文
  • 109.Oracle数据库SQL开发之 索引

    万次阅读 2015-11-25 21:49:33
    109.Oracle数据库SQL开发之 索引  欢迎转载,转载请标明出处: 通常在需要从包含很多行的表中检索少数几行时,都应该对列创建...创建索引使用CREATE INDEX语句可以用来创建B-数索引 语法如下: CREATE [UNIQUE] IND

    109.Oracle数据库SQL开发之 索引

             欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50043069

    通常在需要从包含很多行的表中检索少数几行时,都应该对列创建索引。有一条基本的准则是:当任何当个查询要检索的行少于或等于整个表行数的10%时,索引就非常有用。

    1.  创建B-树索引

    创建索引使用CREATE INDEX语句可以用来创建B-数索引

    语法如下:

    CREATE [UNIQUE] INDEX index_name ONtable_name( column_name,[,column_name …])

    TABLESPACE tab_space;

    由于性能方面的原因,通常应该将索引与表存储到不同的表空间中。

             执行如下查询:

    store@PDB1> selectcustomer_id,first_name,last_name from customers where last_name='Brown';

     

    CUSTOMER_ID FIRST_NAME LAST_NAME

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

               1 John      Brown

    如果last_name列的值都是唯一的,以使任何在WHERE子句中使用last_name列的查询所返回的行数都小于该表总行数的10%. 就意味着last_name列非常适合创建索引。

    store@PDB1> create index i_customers_last_name oncustomers(last_name);

     

    Index created.

    此外,可以使用唯一索引可以实现列值的唯一值。例如:

    store@PDB1> create unique index i_customers_phoneon customers(phone);

     

    Index created.

    也可以对多列创建复合索引。

    store@PDB1> create indexi_employees_first_last_name on employees(first_name,last_name);

     

    Index created.

    2.  创建基于函数的索引

    执行如下:

    store@PDB1> select first_name,last_name fromcustomers where last_name=UPPER('BROWN');

     

    no rows selected

    这个查询使用了一个函数UPPER(),因此不会使用索引i_employees_last_name.

    如果想让索引可以基于函数的结果使用,就必须创建基于函数的索引。

    例如下:

    store@PDB1> create indexi_func_customers_last_name on customers(UPPER(last_name));

     

    Index created.

    为了利用基于函数的索引,DBA必须将初始化参数QUERY_REWRITE_ENABLED设置为TRUE。例如:

    ALTER SYSTEM SET QUERY_REWRITE_ENABLED=TRUE

    3.  从数据字典中获取有关索引的信息

    从user_indexes视图中可以获得有关索引的信息。

    查询all_indexes视图可以获得有关所有要访问的索引信息。

    store@PDB1> selectindex_name,table_name,uniqueness,status from user_indexes where table_name in('CUSTOMERS','EMPLOYEES') order by index_name;

     

    INDEX_NAME

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

    TABLE_NAME

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

    UNIQUENES STATUS

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

    CUSTOMERS_PK

    CUSTOMERS

    UNIQUE     VALID

     

    EMPLOYEES_PK

    EMPLOYEES

    UNIQUE     VALID

     

    I_CUSTOMERS_LAST_NAME

    CUSTOMERS

    NONUNIQUE VALID

     

    I_CUSTOMERS_PHONE

    CUSTOMERS

    UNIQUE     VALID

     

    I_EMPLOYEES_FIRST_LAST_NAME

    EMPLOYEES

    NONUNIQUE VALID

     

    I_FUNC_CUSTOMERS_LAST_NAME

    CUSTOMERS

    NONUNIQUE VALID

     

     

    6 rows selected.

    4.  获取列索引的信息

    通过查询user_ind_columns视图可以获得列索引的信息。

    store@PDB1> selectindex_name,table_name,column_name from user_ind_columns where table_name in('CUSTOMERS','EMPLOYEES') order by index_name;

     

    INDEX_NAME

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

    TABLE_NAME  COLUMN_NAME

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

    CUSTOMERS_PK

    CUSTOMERS    CUSTOMER_ID

     

    EMPLOYEES_PK

    EMPLOYEES     EMPLOYEE_ID

     

    I_CUSTOMERS_LAST_NAME

    CUSTOMERS    LAST_NAME

     

    I_CUSTOMERS_PHONE

    CUSTOMERS    PHONE

     

    I_EMPLOYEES_FIRST_LAST_NAME

    EMPLOYEES     LAST_NAME

     

    I_EMPLOYEES_FIRST_LAST_NAME

    EMPLOYEES     FIRST_NAME

     

    I_FUNC_CUSTOMERS_LAST_NAME

    CUSTOMERS    SYS_NC00006$

     

     

    7 rows selected.

    5.  修改索引

    ALTER INDEX语句可以用来修改索引。

    store@PDB1> alter index i_customers_phone renameto i_customers_phone_number;

     

    Index altered.

    6.  删除索引

    DROP INDEX可以用来删除索引,如下:

    store@PDB1> drop index i_customers_phone_number;

     

    Index dropped.

    7.  创建位图索引

    位图索引一般用于数据仓库中,数据仓库是包含大量数据的数据库。数据仓库中的数据一般使用很多查询来读取,但数据并不被很多并发事务所修改。数据仓库一般被组织机构用来进行商业智能分析,例如监控销售趋势。

             位图索引的候选列是在很多查询中被引用但只包含小范围值的列。

             位图索引一般用来包含大量数据且内容不常修改的表中。而且位图索引只应该在包含少量不同值的列上创建。如果某列的不同值数量少于表中行数的1%,或者如果某列的值的重复次数多于100次,那么此列就是位图索引的候选列。

    创建位图索引如下:

    store@PDB1> create bitmap index i_order_status onorder_status(status);

     

    Index created.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • ORACLESQL SERVER 分区索引的区别

    千次阅读 2014-05-07 13:23:55
    ORACLESQL SERVER都可以建立与表分区不一样的

    ORACLE和SQL SERVER都可以建立与表分区不一样的索引分区。

    ORACLE:要检索所有的数据,我们一般应该建立 全局索引分区(全局索引并不是一般人认为的只存在一个地方,实际上也是可以分区),但:

        使用全局索引,索引键值必须和分区键值相同,这就是所谓的前缀索引。Oracle不支持非前缀的全局分区索引,如果需要建立非前缀分区索引,索引必须建成本地索引。

    还有引用别人的说法:

    假设有一个使用DATE列分区的大表。我们经常使用一个VARCHAR2列(VCOL)进行查询,但这个列并不是表的分区键值。

    有两种可能的方法来访问VCOL列的数据,一是建立基于VCOL列的本地非前缀索引,

                   |                                         |
                 -------                                   -------
                |       |         (10 more                |        |
    Values:     A..     Z..   partitions here)            A..      Z..

    另一种是建立基于VCOL列的全局索引,

                    |                                         |
                  -------                                   -------
                 |       |         (10 more                |        |
    Values:      A..     D..   partitions here)            T..      Z..

    可以看出,如果能够保证VCOL列值的唯一性,全局索引将会是最好的选择。如果VCOL列值不唯一,就需要在本地非前缀索引的并行查询和全局索引顺序查询以及高昂的维护代价之间做出选择

    (摘自:http://blog.itpub.net/14284241/viewspace-520876) 

    但建立本地索引分区,我实验过了,ORACLE有时候就是不走这些索引,非要全表扫描,即使你指定索引也不行!因为在这个表小分区内,特别是在多并行度下,它认为还不如全表扫描快!

    SQL SERVER:和ORACLE相反,SQL可以指定和分区键不同的字段索引,即ORACLE说的非前缀全局索引。而且可以指定存放位置。SQL可以在分区函数上定义分区的键(只能一个),然后可以定义其他的字段索引。

    SQL SERVER,所谓的分区,就是建立一个聚集索引,并指定索引字段和分区方案;你指定后,其他非聚集索引就可以随意指定其他分区方案了。你也可以建立2个聚集索引,一个是按分区键进行的聚集索引,一个是在分区内的聚集索引(但建立此聚集索引时,还是需要引用和外层一样的分区方案和分区字段,实际就是分区内的聚集索引)。

    以上是个人愚见,仅供自己参考。

    展开全文
  • Oracle SQL不走索引小记

    千次阅读 2017-09-26 23:26:29
    SQL执行计划不走索引 一、优化器认为走全表扫描更优。 在这种情况下,需要重新分析一遍表,更新表的状态,有助于优化器分析出正确的执行计划。 analyze table tablename compute statistics; analyze index ...
  • oracle 用户 全部 索引 all index sql
  • oracle索引有多种类型。我分类介绍下几种常用的索引 B 树索引(B-Tree索引) B树索引是我们在oracle数据库中最常用的索引,在详细介绍访问方法之前,我们看一下B-TREE索引的结构(图片来源网络) oracle的B...
  • 使用Oracle SQL Developer迁移sql server至Oracle数据库

    千次阅读 热门讨论 2018-05-14 14:29:42
    Oracle SQL Developer是...本文介绍使用Oracle SQL Developer迁移sql server至Oracle数据库,步骤如下: 一、配置第三方连接 要使用 JDBC 访问数据库,必须使用 JDBC 驱动程序。默认情况下,Oracle SQL Devel...
  • oracle 批量新建索引SQL

    2018-12-11 11:44:21
    UNIQUE:是唯一键索引,如果建非唯一键索引SQL语句去掉此关键词即可; table_name :表名; tablespace_name :表空间名 第一步了解新建一条索引sql:CREATE UNIQUE INDEX 索引名 on 表名(想要创建索引的列名...
  • Oracle增加索引

    千次阅读 2020-10-05 15:03:24
    Oracle表加索引–加快数据查询的利器 什么是索引 索引是对表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 通俗一点地讲,索引对数据库中的表而言就相当于一本书的目录。 索引的...
  • Oracle索引优化原则与方法。对其他DB也很实用哦。 分享~
  • oracle 使用sqlload导入外部数据

    千次阅读 2019-04-02 18:52:46
    使用SQLload大批量导入数据 第一步:创建表 CREATE TABLE "TESTHT"."DEMO" ( "ID" VARCHAR2(20 BYTE) NOT NULL ENABLE, "NAME" VARCHAR2(20 BYTE), "AGE" VARCHAR2(20 BYTE) ) 第二步 : ...
  • Oracle 使用analyze分析索引碎片

    千次阅读 2017-08-08 07:53:17
    1、先分析索引,语句如下: analyze index index_name validate structure 然后查询 index_stats select name, height, pct_used, del_lf_rows/lf_rows from index_stats; DEL_LF_ROWS于LF_ROWS的比例 这是最...
  • ORACLE索引详解及SQL优化,详细描述了几种常用索引原理以及创建方法,解读索引生效条件,以及在开发中常用的提高数据库效率、降低数据库资源消耗的方法。
  • 数据库使用oracle数据库,可视化管理工具使用的PLSQL 查看表中的索引 选中表,右键, view -->indexes就可以查看到表中的索引 image.png 这里只能看到表中那些数据列有索引,但是如果先知道查询语句是否...
  • 我在把oracle数据导入sqlserver中时,发现在oracle中字段定义为唯一索引时,不同记录的此字段如果为空不被认为是重复的,但在sqlserver中如果此字段为唯一索引字段,不允许有2个以上的空值。郁闷。所以只好将sql...
  • ORACLE索引与高性能SQL 教你如何使用和优化oracle数据库
  • Oracle创建索引sql语句

    千次阅读 2020-05-21 10:06:04
    CREATE INDEX POLICYIMPART_INDEX ON ROOTE.W_POLICYIMPART( POLICYID ASC, IMPARTCODE ASC, CUSTOMERTYPE ASC )POLICYIMPART_INDEX索引名称 ROOTE.W_POLICYIMPART表名
  • 在系统分析了Oracle数据库索引特点的基础上, 要注意的问题进行了总结,进行了一些新的探索和尝试, ...对如何使用SQL语句的索引对数据库进行优化的实现方法中 提出了Oracle数据库SQL优化的其它注意问题。
  • Oracle 建立索引SQL优化

    千次阅读 2018-02-11 09:53:22
    如果某个大表经常使用某个字段进行查询,并且检索行数小于总表行数的5%。则应该考虑。  2、对于两表连接的字段,应该建立索引。如果经常在某表的一个字段进行Order By 则也经过进行索引。  3、不应该在小表上...
  • Oracle--使用索引

    千次阅读 2019-05-28 14:07:24
    通过使用索引,可以大大降低I/O次数,从而提高SQL语句的访问性能。 1.单列索引和复合索引 按照索引列的个数,可以将索引划分为单列索引和复合索引俩种类型。 单列索引是指基于单个列所建立的索引,复合索引是指基于...
  • 1.索引的创建与使用 2.创建索引的原则 3.索引的分类 4.创建索引的多种方法 5.管理索引 6.索引优化 7.查看、修改索引属性 8.修改索引名 9.删除索引
  • 自动SQL优化工具Tosska SQL Tuning Expert for Oracle,帮助SQL开发人员解决SQL性能问题。 官网下载https://tosska.com/tosska-sql-tuning-expert-tse-oracle-free-download/ 产品介绍...
  • 一:索引基本概念 oracle提供了两种方式,从表中读取所有行(即全表扫描),或者通过ROWID一次读取一行;...当数据分散在表的多个数据块时,最好是不使用索引,而是使用全表扫描,执行全表扫描时,oracle使用多...
  • ORACLE索引介绍与高性能SQL优化的相关知识
  • Oracle中测试不使用索引使用索引的效果比较分析,啥也不用说了,有图有真相。 1.创建测试数据库,再先批量插入数据: SQL> create table StudentInformation(id number(20) not null primary key,...
  • Oracle创建索引、视图SQL语句

    千次阅读 2020-05-19 12:23:36
    一、索引 1、添加索引 create index 索引对象名 on 索引对应表名(表内索引对象字段名); 例:需创建包含userid属性的userinfo表。 create index userid on system.userinfo(userid); 2、删除索引 drop index 索引对象...
  • Oracle 建立索引SQL优化 数据库索引: 索引有单列索引 复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。 建设原则...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 175,637
精华内容 70,254
关键字:

oracle使用sql增加索引