oracle如何在表指定字段上创建索引的sql简单例子

oracle如何在表指定字段上创建索引的sql简单例子,第1张

table:

create table ta (fa varchar2(10), fb number)

create index idx_ta_fb on ta(fb)

这是最简单的,在这个基础上还可以加其他条件,例如唯一性等。

同时还有其他方法也可以创建索引

如果你有pl/sql,可以查看一下表的定义,其中有索引的部分。

然后点击“SQL“就可以看到更多的语句写法

1,第一次查询慢,以后就快了,主要是因为第一次要进行磁盘 *** 作,以后数据被cache到内存中了,不在 *** 作磁盘,所以就快了。

2,对于你说的这四种查询,where条件中的a=a估计你是举例子这样写的吧。实际上应该是a=变量A。其他的b,c,d也是这样。那么这种语句都是可以利用你说的复合索引的。如果是RBO优化器,这四句都应该用索引。但是oracle现在推荐的CBO优化器不能保证你都走索引。

3,到底用没用索引,你可以从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

使用hint技术,表别名+索引名

select/*+

INDEX(pa IDX_PAGREE_1)

INDEX(pi IDX_PITEM_5)

INDEX(pd IDX_PRODUCTS_3)

*/ *

from table1 c,

table2 pa,

table3 pi,

table4 pd

where pa.customerid = c.customerid

and pi.purchaseagreementid = pa.id

and pi.productid = pd.id

and pd.statusid=3601


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11579743.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存