我有一个sql语句,查询时间比较长
SELECT * FROM
(SELECT TEMP.*,ROWNUM RN FROM(SELECT ENP.ENP_NAME ,DETAIL.B_ENP_NAME ,GOOD.DRUG_NAME ,GOOD.PASS_NUM ,GOOD.MANU_NAME ,SALE.LOT_NUM ,NVL(DETAIL.SALE_AMOUNT,'0') || NVL(DETAIL.UOM,'') ,TO_CHAR(SALE.CREATE_DATE,'YYYY-MM-DD')
FROM SALEDETAIL DETAIL
LEFT JOIN SALE SALE ON SALE.ID=DETAIL.MAIN_ID
LEFT JOIN GOODS_INFO GOOD ON GOOD.ID=SALE.DRUG_ID
LEFT JOIN ENTERPRISE ENP ON ENP.ID=SALE.S_ENP_ID
WHERE SALE.IS_SUBMIT=1 AND ENP.REGION_ID LIKE '31%'
ORDER BY TO_CHAR(SALE.CREATE_DATE,'YYYY-MM-DD') DESC )
TEMP WHERE ROWNUM <=10) WHERE RN > 0
其中SALEDETAIL 大概有26万条记录
SALE 有20万条记录
GOODS_INFO 有1-2万条记录
ENTERPRISE大概有1-2条记录
目前这个查询需要耗时十几秒,太慢了,有什么好优化的地方吗(去掉order by到时很快,但客户是要求安时间排序)。SALEDETAIL 和SALE每天都在万数量级增加,数据库采用的ORACLE.
这个分页语句查询在去掉order by之后还是速度很快的。
但在做统计总记录数是慢了。
SELECT COUNT(*) FROM (SELECT DETAIL.ID FROM IDS_SALEDETAIL DETAIL LEFT JOIN SALE SALE ON SALE.ID=DETAIL.MAIN_ID LEFT JOIN GOODS_INFO GOOD ON GOOD.ID=SALE.DRUG_ID LEFT JOIN ENTERPRISE ENP ON ENP.ID=SALE.S_ENP_ID ) TOTALTABLE
统计的速度和获取分页的速度不是一个数量等级的差别。
分享到:
相关推荐
这篇博客"通过分析SQL语句的执行计划优化SQL(总结)"深入探讨了这一主题,下面将对其中的主要知识点进行详细阐述。 1. **执行计划的理解**: 执行计划是数据库管理系统在执行SQL语句之前预先生成的一种详细步骤,它...
### SQL语句优化心得 #### 引言 在软件开发过程中,SQL语句的编写往往直接关系到应用程序的性能表现。特别是在系统初期阶段,由于数据量较小,即使编写了一些效率较低的SQL语句,也可能不会立即暴露出来。然而,...
在SQL语句中,使用问号(`?`)作为参数占位符是一种常见的做法,尤其是在编程语言如Java中与数据库交互时。这种方式被称为预编译语句或参数化查询,它具有重要的安全性和性能优势。 ### SQL参数化查询的概念 参数化...
在IT行业中,MyBatis是一个广泛使用的持久层框架,它允许开发者直接编写SQL语句,提供了灵活的数据访问和映射机制。这篇博客“mybatis直接执行sql语句后续之一”可能探讨了如何在MyBatis中高效且有效地执行SQL操作。...
### 通过分析SQL语句的执行计划优化SQL 在数据库管理与开发过程中,SQL语句的性能优化至关重要。本文将详细介绍如何理解SQL及其执行计划,并给出具体的优化策略。通过优化SQL,可以显著提升应用程序的响应速度及...
下面我们将详细探讨SQL语句嵌套的概念、应用场景以及如何在VC++中实现。 首先,让我们理解SQL语句嵌套的基本概念。嵌套通常发生在`SELECT`语句中,其中包含一个或多个子查询,子查询的结果作为外部查询的一部分进行...
下面是动态SQL语句的一些基本语法和应用场景: 一、普通SQL语句可以用Exec执行 可以使用Exec语句来执行普通的SQL语句,例如: ```sql Exec('select * from tableName') Exec sp_executesql N'select * from ...
下面,我们将详细讨论OA系统中常见的SQL语句及其应用。 1. **人事管控**:在OA系统中,人事数据的管理和更新至关重要。例如,"01人事数据导入脚本.sql"可能包含了导入员工信息的SQL脚本,包括姓名、职位、入职日期...
当我们在数据库客户端编写并测试了有效的SQL语句后,有时需要将这些语句集成到Java应用程序中,以便在运行时动态执行。这就涉及到了“SQL语句转String”这一过程。 首先,理解SQL语句转String的含义。它指的是将...
下面将详细介绍如何使用 Delphi 的 ADOQuery 组件来处理包含多个 SQL 语句的操作。 ##### 1. 将多条 SQL 语句组合成一个字符串 示例代码展示了如何构建一个包含多条 SQL 语句的字符串: ```delphi var sqlStr: ...
ORACLE 优化 SQL 语句提高 Oracle 执行效率 Oracle 是一个功能强大的关系数据库管理系统,然而,如果不正确地使用 SQL 语句,可能会导致执行效率低下。为了提高 Oracle 的执行效率,需要遵循一些最佳实践。下面是...
### Delphi中SQL语句的使用总结 在Delphi中使用SQL语句是与数据库进行交互的重要手段之一。本文将详细介绍如何在Delphi环境中构造和执行SQL查询,并给出具体的示例来帮助理解。 #### 一、基本SQL查询的构建 在...
《易语言SQL语句生成器》是一款专为易语言编程环境设计的工具,它能够帮助开发者自动生成SQL语句,极大地提高了开发效率。这款软件的核心功能包括:取后缀名、转换程序、取mdb表名以及生成局部变量语句等。下面我们...
下面将从几个关键点出发,详细介绍如何对Oracle SQL语句进行完全优化。 #### 1. 选择高效的查询顺序 - **驱动表选择**:在多表连接查询中,选择合适的驱动表对于提高查询效率至关重要。通常来说,选择数据量较小...
在“SQL语句手册.chm”中,我们可以期待找到关于SQL的全面介绍,包括其基本概念、语法以及如何执行各种操作。下面我们将深入探讨SQL的关键知识点。 1. **SQL基础**: SQL的基本组成部分包括数据定义语言(DDL)、...
下面我们将深入探讨一些重要的SQL Server SQL语句和概念。 1. **基本查询**: - **SELECT**:SQL的基础在于SELECT语句,用于从一个或多个表中检索数据。你可以选择特定列、所有列,或者使用聚合函数(如COUNT、SUM...
下面的SQL语句展示了如何列出使用次数最多且占用空间较大的查询计划: ```sql SELECT TOP 100 cp.cacheobjtype, cp.usecounts, cp.size_in_bytes, qs.statement_start_offset, qs.statement_end_offset, qt.dbid, ...
下面将详细探讨易语言动态拼接SQL语句的相关知识点。 一、易语言基础 易语言是一种以自然语言为基础的编程语言,它的语法设计简洁明了,易于理解。在易语言中,编写SQL语句与在其他编程语言中的方式有所不同,因为...
在.NET框架中,开发人员经常会遇到与数据库交互的问题,特别是在使用C#进行SQL语句构建时。本篇文章将深入探讨当在.NET环境中遇到无法创建SQL语句问题时的解决策略,帮助开发者更好地理解和处理此类问题。 ### .NET...