`

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数据库中ORDER BY排序和查询按IN条件的顺序输出

    在没有唯一索引或主键约束的情况下,数据库无法保证相同值的记录在排序后的精确位置。 排序的稳定性在某些场景下至关重要,比如在保持数据原有顺序或者进行聚合操作时。在数据结构领域,稳定的排序算法(如冒泡排序...

    Oracle中分组后拼接分组字符串[文].pdf

    第一部分是最内层的 SQL,用于按 `NO` 和 `VALUE` 排序,并列出行号: ```sql select a.No, a.Value, a.Name, row_number() over(order by a.No, a.Value desc) rnFirst from Test a; ``` 这部分的结果如下: | ...

    Oracle实用教程(第五版)(Oracle11g版)

    在本教程中,你会学习如何使用SELECT语句进行复杂查询,比如JOIN操作来合并多个表的数据,GROUP BY和HAVING子句进行分组和过滤,以及ORDER BY进行排序。此外,DML语句(INSERT、UPDATE、DELETE)用于管理数据,DDL...

    oracle约束和索引笔记

    - **B树索引(B-Tree Index)**: 最常见的索引类型,适用于等值查询,根据索引键的排序顺序查找数据。 - **位图索引(Bitmap Index)**: 适合于在含有大量重复值的列上,尤其是在进行多列组合查询时,将多个位图...

    Oracle SQL 测试题目

    由于 `ROWNUM` 在 Oracle SQL 中是在查询执行时分配的,因此在子查询中先对 `sal` 排序,再在外部查询中限制返回的行数,以获取最高工资的前三名员工。正确SQL如下: ```sql SELECT * FROM ( SELECT * FROM ...

    oracle表结构生成工具

    Excel的便利性和灵活性使得用户可以方便地编辑和调整表结构,如添加、删除或修改列,设置主键、外键和索引等。工具会读取这些信息并自动生成相应的SQL脚本。 在使用这个工具时,用户首先需要在Excel中创建一个模板...

    数据库面试题 oracle笔试 oracle例题

    同样,内存的大小直接影响Oracle的数据缓冲和内存排序效率。如果内存不足,会导致频繁的内存分页,从而增加磁盘I/O。因此,DBA需要确保服务器有足够的CPU和内存资源,并使用如vmstat、glance、top或sar等工具监控...

    oracle数据工程师面试题.pdf

    "oracle数据工程师面试题.pdf" 本资源是一个Oracle数据工程师面试题库,涵盖了多个关于Oracle数据库管理和开发的问题。下面是从文件中提取的知识点: 1. 数据类型和操作 * varchar2数据类型:varchar2是Oracle中...

    主键和外键.doc

    - **索引**:索引字段没有重复值,但可以有一个空值,索引主要用于提高查询排序的速度。 #### 三、聚集索引与非聚集索引的区别 - **聚集索引**:在索引页里直接存放数据,一个表只能有一个聚集索引。 - **非聚集...

    Oracle1.pdf

    在Oracle笔记的第一天,我们主要探讨了数据库的基本概念、Oracle的工作方式、简单的查询操作、数据去重、排序以及条件判断。 首先,数据库是存储和管理数据的软件,其中最常见的是RDBMS,如Oracle、MySQL、SQL ...

    Oracle数据库经典教程

    高级查询涉及联接(JOIN)、子查询、聚合函数(COUNT、SUM、AVG等)和分组(GROUP BY)、排序(ORDER BY)等,能实现更复杂的多表查询和数据分析。 这个教程对于Oracle数据库初学者来说是非常有价值的,它涵盖了从...

    Oracle初学者指南

    同时,学会使用WHERE子句进行条件筛选,ORDER BY进行排序,GROUP BY进行分组,以及JOIN操作连接多个表。 在数据库设计中,了解关系模型理论,如实体、属性和关系,是必要的。Oracle支持多种表类型,如普通表、索引...

    oracle常用系统视图+导入导出

    1. `ALL_CONS_COLUMNS` 和 `ALL_CONSTRAINTS`:这两者结合可以找出表间的约束关系,如主键和外键。 2. `DBA_DEPENDENCIES`:追踪对象间的依赖关系,帮助理解哪些表可能是从表。 至于数据的导入导出,Oracle提供了...

    Oracle递归树形结构查询功能

    在实际应用中,例如组织结构的展示,我们可以创建一个包含部门信息的表`SYS_DEPT`,其中`dept_id`为主键,`par_dept_id`表示父级部门ID,以此建立层级关系。通过递归查询,我们可以轻松地获取任意部门及其所有子部门...

    oracle九阴真经

    学习如何使用WHERE子句进行条件筛选,ORDER BY进行排序,GROUP BY进行分组以及HAVING进行分组后的条件过滤。 4. **DML语句**:Data Manipulation Language,包括INSERT、UPDATE、DELETE,分别用于插入新记录、修改...

    Oracle优化器介绍

    12. 排序合并连接 13. 对索引字段使用 MAX 或 MIN 函数 14. ORDER BY 索引字段 15. 全表扫描 RBO 优化器会根据规则选择执行计划,但这种方法有其局限性,不能够根据实际情况进行调整。 基于成本的优化器(CBO) ...

    oracle练习题.zip

    1. **查询操作**:Oracle的SQL查询语句基于标准SQL,但支持更复杂的子查询、连接操作、聚合函数(如COUNT、SUM、AVG等)以及分组(GROUP BY)和排序(ORDER BY)。例如,找出每个部门的平均薪水: ```sql SELECT ...

    oracle查看主外键约束关系

    7. `order by a.table_name`:为了使结果更加清晰有序,根据主键表名称进行排序。 通过对上述SQL语句的分析,我们可以发现,这个查询语句是通过几个Oracle数据字典视图的关联查询来实现查看主外键约束关系的目的。...

    Oracle 数据查询器

    4. **数据浏览**:用户可以直接浏览数据库中的表结构,包括字段名、数据类型、主键信息等,也可以查看单个表中的数据记录。 5. **事务处理**:支持提交和回滚事务,确保数据的一致性和完整性。 6. **对象管理**:...

Global site tag (gtag.js) - Google Analytics