`

oracle 按主键排序

阅读更多



 今天又遇到了个问题,我在应用中发现我们的一个web列表显示的特别慢,列表只是简单的将数据单表数据order 下输出,并且是对

create table T_ATTACKEVENT
(
  ATTEVNT_ID_N       NUMBER not null,
  ATTEVNT_SIP_C      VARCHAR2(15) not null,
  ATTEVNT_SPORT_N    NUMBER not null,
  ATTEVNT_DIP_C      VARCHAR2(15) not null,
  ATTEVNT_DPORT_N    NUMBER not null,
  ATTEVNT_PROTOCOL_C VARCHAR2(10),
  ATTEVNT_TIME_C     TIMESTAMP(6) not null,
  ATTEVNT_NOOFDAY_N  NUMBER not null
)


alter table T_ATTACKEVENT
  add constraint PK_ATTACKEVENT primary key (ATTEVNT_ID_N)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );


select * from t_attackevent_0809 t order by t.attevnt_id_n desc

 select * from t_attackevent t order by t.attevnt_id_n desc,我以为会默认走主键索引排序,但是当我看执行计划时却发现如下图

 

采用的是全表查询,经过网上查询发现oracle自动优化,在面对这种情况时会认为全表更有效率而不是采用索引,

解决方法

1.我们这个应用可以考虑以时间字段排序,即

select * from t_attackevent t order by t.attevnt_time_c desc,这种方式即用到了我们在时间上的索引,效率也是可以接受的。

2.如果更广泛一些的情况,我们只有一个主键索引,我们必须使用order by pk ,这时候为了使用index可以采用hint

select /*+index(t PK_ATTACKEVENT)*/* from t_attackevent t order by t.attevnt_id_n desc

(注意hint之间的空格,这个很关键).

 

  • 大小: 35.3 KB
分享到:
评论

相关推荐

    Oracle索引组织表

    索引组织表(IOT)不仅可以存储数据,还可以存储为表建立的...织表的数据是根据主键排序后的顺序进行排列的,这样就提高了访问的速度。 但是这是由牺牲插入和更新性能为代价的(每次写入和更新后都要重新进行重 新排序)

    oracle 重置序列从指定数字开始的方法详解

    重置oracle序列从指定数字开始 代码如下: declare n number(10); v_startnum number(10):=10000001;–从多少开始 v_step number(10):=1;–步进 tsql varchar2(200); v_seqname varchar2(200):=’MIP_JF_SEQUENCE’;...

    Oracle SQL Handler (Oracle客户端工具) V3.1

    本工具是用 Java 开发的、专门用于 Oracle 数据库操作的一种图形界面工具: 多线程、多连接、支持 PL/SQL、功能实用、操作简便,能运行于所有平台包括 Windows、Linux 及 Unix,勿需安装 Oracle 客户端,仅 2.8 MB ...

    一个oracle客户端(oracle sql handler)

    (5)当提示窗口出现时,只需输入部分字串,窗口能自动查找全串,比如,输入子串“name”,显示“first_name”项,按Ctrl+PdDn键则向下查找“last_name”项,按Ctrl+PdUp键则向上查找“first_name”项 o 彩色的...

    java 查询oracle数据库所有表DatabaseMetaData的用法(详解)

    下面小编就为大家带来一篇java 查询oracle数据库所有表DatabaseMetaData的用法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Oracle自学(学习)材料 (共18章 偏理论一点)

    13 维护数据的完整性 目标 13-2 数据的完整性 13-3 约束的类型 13-4 约束的状态 13-5 约束的检测 13-7 定义即时约束或延迟约束 13-8 强制主键和唯一键 13-9 外部关键字的考虑 13-10 在建表时定义完整性约束 13-11 ...

    ORACLE9i_优化设计与系统调整

    §10.2 正确的主键字段的选择 113 §10.3 字段类型及长度的选择 113 §10.3.1 如果能用字符型就不要用数字型 114 §10.3.2 相互产生运算的数字型字段长度和精度要一致 114 §10.3.2 不要为了节省空间而将字段的长度...

    主键生成器sequence

    在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。

    震撼推出超方便实用的Oracle开发工具 - Oracle SQL Handler,双语界面,智能SQL编辑器,免装Oracle客户端,能运行于Windows, 双语界面

    “desc [user.]objectName[@dbLink]” 或 Ctrl+鼠标点击字串“[user.]objectName[@dbLink] ”,如果是一表名,则能清楚地显示表的列信息(包括列名称、数据类型及长度、默认值、非空)、索引、约束 条件(主键、唯一...

    oracle索引开发指南

    2)在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; 3)在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度; 4)在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等  语法结构 create table 表名( [字段名] [类型] [约束] ……….. CONSTRAINT fk_column FOREIGN KEY(column1,column2,…..column_n) ...

    Oracle数据库、SQL

    13.1按范式要求设计表结构 23 13.2多表连接的种类 23 13.3交叉连接 23 13.4内连接 23 13.5外连接 25 13.6非等值连接 27 13.7表连接总结 27 十四、 集合 28 14.1表连接主要解决的问题 28 14.2集合运算 28 14.3集合...

    Oracle开发工具 - Oracle SQL Handler(功能强大,超方便好用, 免装客户端, Windows / Linux)

    “desc [user.]objectName[@dbLink]” 或 Ctrl+鼠标点击字串“[user.] objectName[@dbLink]”,如果是一表名,则能清楚地显示表的列信息(包括列名称、数据类 型及长度、默认值、非空)、索引、约束条件(主键、唯一...

    MySQL中主键与rowid的使用陷阱总结

    rowid和主键有什么关联关系; 在主键的使用中存在哪些隐患; 如何来理解rowid的潜在瓶颈并调试验证。 本文要和大家一起讨论这几个问题,测试的环境基于MySQL 5.7.19版本。 问题1、如何感受到rowid的存在 我们...

    Oracle8i_9i数据库基础

    §2.4.1 用 ORDER BY 子句来对结果进行排序 76 §2.4.2 用 BREAK 命令 来对结果进行排列 76 §2.4.3 用 COMPUTE 命令对结果进行格式化 79 §2.5 配置会话环境 82 §2.5.1 ARRAYSIZE(取回的行数) 82 §2.5.2 ...

    oracle数据库经典题目

    1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程。 2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。 3.在需要滤除查询结果中重复的行时,必须...

    oracle 索引组织表的深入详解

    索引组织表的数据是根据主键排序后的顺序进行排列的,这样就提高了访问的速度。但是这是由牺牲插入和更新性能为代价的(每次写入和更新后都要重新进行重新排序)。索引组织表的创建格式如下: 代码如下:create table ...

    数据库基础 ORACLE

    §2.4.1 用 ORDER BY 子句来对结果进行排序 77 §2.4.2 用 BREAK 命令 来对结果进行排列 77 §2.4.3 用 COMPUTE 命令对结果进行格式化 79 §2.5 配置会话环境 83 §2.5.1 ARRAYSIZE(取回的行数) 83 §2.5.2 ...

    Oracle事例

    1.增加主键 alter table TABLE_NAME add constraint KEY_NAME primary key (TABLE_COLUMN); 指定表空间 alter table TABLE_NAME add constraint KEY_NAME primary key (TABLE_COLUMN) using index tablespace ...

Global site tag (gtag.js) - Google Analytics