今天又遇到了个问题,我在应用中发现我们的一个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
分享到:
相关推荐
索引组织表(IOT)不仅可以存储数据,还可以存储为表建立的...织表的数据是根据主键排序后的顺序进行排列的,这样就提高了访问的速度。 但是这是由牺牲插入和更新性能为代价的(每次写入和更新后都要重新进行重 新排序)
重置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’;...
本工具是用 Java 开发的、专门用于 Oracle 数据库操作的一种图形界面工具: 多线程、多连接、支持 PL/SQL、功能实用、操作简便,能运行于所有平台包括 Windows、Linux 及 Unix,勿需安装 Oracle 客户端,仅 2.8 MB ...
(5)当提示窗口出现时,只需输入部分字串,窗口能自动查找全串,比如,输入子串“name”,显示“first_name”项,按Ctrl+PdDn键则向下查找“last_name”项,按Ctrl+PdUp键则向上查找“first_name”项 o 彩色的...
下面小编就为大家带来一篇java 查询oracle数据库所有表DatabaseMetaData的用法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
13 维护数据的完整性 目标 13-2 数据的完整性 13-3 约束的类型 13-4 约束的状态 13-5 约束的检测 13-7 定义即时约束或延迟约束 13-8 强制主键和唯一键 13-9 外部关键字的考虑 13-10 在建表时定义完整性约束 13-11 ...
§10.2 正确的主键字段的选择 113 §10.3 字段类型及长度的选择 113 §10.3.1 如果能用字符型就不要用数字型 114 §10.3.2 相互产生运算的数字型字段长度和精度要一致 114 §10.3.2 不要为了节省空间而将字段的长度...
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
“desc [user.]objectName[@dbLink]” 或 Ctrl+鼠标点击字串“[user.]objectName[@dbLink] ”,如果是一表名,则能清楚地显示表的列信息(包括列名称、数据类型及长度、默认值、非空)、索引、约束 条件(主键、唯一...
2)在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; 3)在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度; 4)在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其...
在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等 语法结构 create table 表名( [字段名] [类型] [约束] ……….. CONSTRAINT fk_column FOREIGN KEY(column1,column2,…..column_n) ...
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集合...
“desc [user.]objectName[@dbLink]” 或 Ctrl+鼠标点击字串“[user.] objectName[@dbLink]”,如果是一表名,则能清楚地显示表的列信息(包括列名称、数据类 型及长度、默认值、非空)、索引、约束条件(主键、唯一...
rowid和主键有什么关联关系; 在主键的使用中存在哪些隐患; 如何来理解rowid的潜在瓶颈并调试验证。 本文要和大家一起讨论这几个问题,测试的环境基于MySQL 5.7.19版本。 问题1、如何感受到rowid的存在 我们...
§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 ...
1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程。 2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。 3.在需要滤除查询结果中重复的行时,必须...
索引组织表的数据是根据主键排序后的顺序进行排列的,这样就提高了访问的速度。但是这是由牺牲插入和更新性能为代价的(每次写入和更新后都要重新进行重新排序)。索引组织表的创建格式如下: 代码如下:create table ...
§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 ...
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 ...