oracle 怎么建索引

时间:2021-11-22 08:40:38
我现在有表结构;
create table TBBOOKDATA
(
  ITEMID           NUMBER not null,
  URL              VARCHAR2(300),
  ITEMNAME         VARCHAR2(100),
  AUTHOR           VARCHAR2(100),
  ISBN             VARCHAR2(20),
  PUBLISHER        VARCHAR2(100),
  ABSTRACT         VARCHAR2(4000),
  IMAGE_URL        VARCHAR2(300),
  ADDTS            DATE,
  PRICE            VARCHAR2(100),
  ABSTRACT2        VARCHAR2(4000),
  UPDATETS         DATE,
  CAN_BUY          VARCHAR2(8) default 'y',
  CAN_READ         VARCHAR2(8) default 'y',
  REAL_PRICE       VARCHAR2(100),
  PUBLICATION_DATE VARCHAR2(100),
  ITEM_TYPE        VARCHAR2(8),
  ITEM_QUALITY     NUMBER,
  CATEGORY         VARCHAR2(100),
  AUDITRESULT      NUMBER default -1,
  AUDITVIEW        VARCHAR2(500)
)

请问,怎么在这个表上创建以URL 为键的索引,谢谢,在线等

10 个解决方案

#1


create index idx_URL on TBBOOKDATA(URL);

#2


引用 1 楼 gelyon 的回复:
create index idx_URL on TBBOOKDATA(URL);

仅仅是这样就好了吗,好像上次这个标有100w条数据的时候,查询速度还是很慢,是不是索引要更新的,或者create index 之后好药有其他操作索引才能生效,查询效率才会大大提高?

#3


select count(*) from tbbookdata where url=inurl,这样的查询效率还是很低啊

#4


不建议在字符串很长的列的创建索引,这样索引的存储空间很大,更新成本也非常高。
如果表中数据更新比较频繁,一段时间后要进行索引重建消除碎片。
看看表高水平线是否太高。
对表进行分析,执行计划中是否使用到索引。
 

#5


如果表数据很大,一般对创建的索引都要定时对表和索引进行分析,这样才能尽量保证优化器CBO走index

#6


没有任何的根据需要定期重建或者分析,仅仅是说根据数据量的变化,
以及应用的数据加载和更新特别,以及执行计划还有相关响应时间,可用性来决定是否需要进行这些动作。

#7


打酱油的路过!

#8


建议建立一个URL基础表与BOOK链接,BOOK就不要建立URL了。。。。


一般不会安URL进行查询。。。

#9


看下执行计划吧

#10


--送上
1、创建唯一索引
    create unique index index_name on table_name(id);

    2、创建单列索引
    create index i_name on tb_name(name);--建立表tb_name中name字段索引

    3、创建复合索引
    create index i_deptno_job on emp(deptno, job);  --由表emp的deptno和job字段建立的复合索引

    4、重建索引
    alter index index_name rebuild;
    5、删除索引
    drop index index_name;

#1


create index idx_URL on TBBOOKDATA(URL);

#2


引用 1 楼 gelyon 的回复:
create index idx_URL on TBBOOKDATA(URL);

仅仅是这样就好了吗,好像上次这个标有100w条数据的时候,查询速度还是很慢,是不是索引要更新的,或者create index 之后好药有其他操作索引才能生效,查询效率才会大大提高?

#3


select count(*) from tbbookdata where url=inurl,这样的查询效率还是很低啊

#4


不建议在字符串很长的列的创建索引,这样索引的存储空间很大,更新成本也非常高。
如果表中数据更新比较频繁,一段时间后要进行索引重建消除碎片。
看看表高水平线是否太高。
对表进行分析,执行计划中是否使用到索引。
 

#5


如果表数据很大,一般对创建的索引都要定时对表和索引进行分析,这样才能尽量保证优化器CBO走index

#6


没有任何的根据需要定期重建或者分析,仅仅是说根据数据量的变化,
以及应用的数据加载和更新特别,以及执行计划还有相关响应时间,可用性来决定是否需要进行这些动作。

#7


打酱油的路过!

#8


建议建立一个URL基础表与BOOK链接,BOOK就不要建立URL了。。。。


一般不会安URL进行查询。。。

#9


看下执行计划吧

#10


--送上
1、创建唯一索引
    create unique index index_name on table_name(id);

    2、创建单列索引
    create index i_name on tb_name(name);--建立表tb_name中name字段索引

    3、创建复合索引
    create index i_deptno_job on emp(deptno, job);  --由表emp的deptno和job字段建立的复合索引

    4、重建索引
    alter index index_name rebuild;
    5、删除索引
    drop index index_name;