- 浏览: 1364077 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (551)
- 计划 (4)
- java (115)
- oracle (60)
- ajax (3)
- javascript (64)
- 计算机操作技巧集 (11)
- 近期关注话题 (10)
- 随想 (13)
- html (6)
- struts (15)
- hibernate (16)
- spring (2)
- game (0)
- Eglish (10)
- DisplayTag (6)
- jsp (18)
- css (3)
- eclipse (3)
- 其他知识 (8)
- 备用1 (12)
- 备用2 (1)
- 笑话-放松心情 (9)
- 设计 (1)
- 设计模式 (1)
- 数据结构 (0)
- office办公软件 (5)
- webwork (0)
- tomcat (2)
- MySql (1)
- 我的链接资源 (5)
- xml (2)
- servlet (0)
- PHP (13)
- DOM (0)
- 网页画图vml,canvas (1)
- 协议 (2)
- 健康 (3)
- 书籍下载 (1)
- jbpm (1)
- EXT (1)
- 自考 (2)
- 报表 (4)
- 生活 (64)
- 操作系统基础知识 (2)
- 测试 (2)
- guice (1)
- google学习 (2)
- Erlang (1)
- LOG4J (2)
- wicket (1)
- 考研 (1)
- 法律 (1)
- 地震 (1)
- 易学-等等相关 (1)
- 音乐 (1)
- 建站 (4)
- 分享说 (3)
- 购物省钱 (0)
- linux (1)
最新评论
-
zenmshuo:
如果使用SpreadJS这一类的表格工具,应该能更好的实现这些 ...
js中excel的用法 -
hjhj2991708:
第一个已经使用不了
jar包查询网站 非常好用! -
jiangmeiwei:
...
中文乱码 我的总结 不断更新 -
gary_bu:
...
response.sendRedirect 中文乱码问题解决 -
hnez:
多谢指点,怎么调试也不通,原来我在<body>&l ...
ExtJs IE ownerDocument.createRange() 错误解决方案
SELECT * FROM (SELECT ROWNUM ROWSEQ, SQLA.* FROM (SELECT * FROM QMYS_V_ZLCS WHERE 1 = 1 AND SPZT IN ('A', 'B', 'C', 'D') ) SQLA) WHERE ROWSEQ BETWEEN 1 AND 15 ORDER BY QMYS_ZLCS_ID desc哪位可以优化一下?谢谢!
评论
1 楼
armorking
2008-09-12
首先这条SQL是不对的
这个SQL,是个典型的SQL分页语句,
ORDER BY 条件应当放到最里面的子查询中
SPZT的IN条件,可以考虑写成 OR 的形式
当然,如果是ORACLE9I以上版本,ORACLE的SQL编译器会自动作如上优化
当SPZT的值取'A', 'B', 'C', 'D'的记录占总记录数的比例很小(比如说5%以下)时,
可以考虑在SPZT上加上索引,没有索引的话会造成全表扫描
而当这个比例比较大的时候,加上索引反而可能会变得更慢
可以考虑BETWEEN AND用<=和>=改写
当然,如果是单纯的想要查询前15条记录
可以用下面的这个SQL,少一层嵌套
另外,在ORACLE下可以用ROWNUMBER()函数改写这个SQL语句
这个SQL,是个典型的SQL分页语句,
ORDER BY 条件应当放到最里面的子查询中
SELECT * FROM ( SELECT ROWNUM ROWSEQ, SQLA.* FROM ( SELECT * FROM QMYS_V_ZLCS WHERE 1 = 1 AND SPZT IN ('A', 'B', 'C', 'D') ORDER BY QMYS_ZLCS_ID desc ) SQLA ) WHERE ROWSEQ BETWEEN 1 AND 15
SPZT的IN条件,可以考虑写成 OR 的形式
当然,如果是ORACLE9I以上版本,ORACLE的SQL编译器会自动作如上优化
当SPZT的值取'A', 'B', 'C', 'D'的记录占总记录数的比例很小(比如说5%以下)时,
可以考虑在SPZT上加上索引,没有索引的话会造成全表扫描
而当这个比例比较大的时候,加上索引反而可能会变得更慢
可以考虑BETWEEN AND用<=和>=改写
SELECT * FROM ( SELECT ROWNUM ROWSEQ, SQLA.* FROM ( SELECT * FROM QMYS_V_ZLCS WHERE ( A.SPZT = 'A' OR A.SPZT = 'B' OR A.SPZT = 'C' OR A.SPZT = 'D' ) ORDER BY QMYS_ZLCS_ID desc ) SQLA WHERE ROWNUM <= 15 ) WHERE ROWSEQ >= 1
当然,如果是单纯的想要查询前15条记录
可以用下面的这个SQL,少一层嵌套
SELECT ROWNUM ROWSEQ, SQLA.* FROM ( SELECT * FROM QMYS_V_ZLCS WHERE ( A.SPZT = 'A' OR A.SPZT = 'B' OR A.SPZT = 'C' OR A.SPZT = 'D' ) ORDER BY QMYS_ZLCS_ID desc ) SQLA WHERE ROWNUM <= 15
另外,在ORACLE下可以用ROWNUMBER()函数改写这个SQL语句
SELECT * FROM ( SELECT ROW_NUMBER() OVER(ORDER BY QMYS_ZLCS_ID desc) AS ROW_NO , A.* FROM QMYS_V_ZLCS A WHERE ( A.SPZT = 'A' OR A.SPZT = 'B' OR A.SPZT = 'C' OR A.SPZT = 'D' ) ) X WHERE X.ROW_NO BETWEEN 1 AND 15
发表评论
-
oracle删除重复记录
2009-07-16 11:16 1215有困难,找猪八戒 Q:要删除一张表中的重复记录,但是要保留一条 ... -
db2 express-c 安装后检查及安装例子数据库
2009-02-27 17:07 3393摘自http://publib.boulder.ibm.com ... -
问:如何得到与WEB-INF同级目录下的配置文件
2008-09-23 08:35 2133Q: 有如下需求:需要从WEB-INF同级的目录下读取配 ... -
N Vs Exist in SQL
2008-07-02 16:39 1391N Vs Exist in SQL 原文如下: http:// ... -
SQL 指南
2008-05-27 11:45 1046http://www.sql-tutorial.com/ -
orace 分析函数
2008-05-26 09:08 1211select x.num, sum(x.num) over ( ... -
oralce tutoial 指南
2008-03-22 14:21 1027http://www.exforsys.com/tutoria ... -
查找部分字段重复的记录 ORACLE Identifying duplicate rows
2008-03-13 08:49 1964http://www.jlcomp.demon.co.uk/f ... -
oracle 资源网站
2008-01-12 11:42 1876oracle alter table table_ ... -
Top 5 Oracle Reference Books 前5本 oracle 参考书
2008-01-12 11:24 1717http://databases.about.com/od/o ... -
Oracle与DB2、MySQL取前10条记录的对比<转>
2008-01-11 16:46 2221原文:http://tech.ccidnet.com/art/ ... -
expert on e on one oracle - Thomas Kyte 读书笔记
2008-01-11 10:17 2109=============================== ... -
oracle 资源 整体理解oralce 比较好 英文网
2008-01-09 16:59 1190http://www.adp-gmbh.ch/ora/admi ... -
oracle java 插入 clob insert clob hibernate
2007-12-21 15:48 7229用jdbc 或者 hibernate http://www.w ... -
pl/sql 应用之一
2007-12-12 17:21 1135declare begin insert into x ... -
init.ora文件所在目录
2007-12-12 15:58 2166Oracle安装盘:\oracle\admin\DB名称\pf ... -
[Oracle] 如何解决ORA-04031 错误
2007-12-12 15:53 3253[Oracle] 如何解决ORA-04031 ... -
oracle faq 常见问题解答 http://www.orafaq.com/
2007-12-12 13:34 1498The Oracle FAQ http://www.oraf ... -
oracle 快速参考
2007-12-12 09:58 1094http://www.psoug.org/library.ht ... -
oracle like
2007-12-12 09:18 3414http://www.adp-gmbh.ch/ora/sql/ ...
相关推荐
下面将详细讨论SQL Server 2008中的关键性能优化技巧。 首先,我们需要理解SQL查询执行的基础——查询计划。SQL Server通过解析查询语句,生成一个执行计划,然后按照这个计划来执行查询。优化查询计划是提高性能的...
5. **SQL优化技巧**:这可能涉及重写SQL语句以减少资源消耗,比如使用连接操作而非子查询,或者避免在索引字段上使用否定条件。 6. **存储优化**:讨论表分区、分片、归档等策略,以提高读写效率和存储空间的管理。...
2. **在线资源**:O’Reilly出版社提供的《SQL in a Nutshell》、《SQL Pocket Guide》等书籍,以及官方网站oreilly.com和oreillynet.com,提供了丰富的学习材料和社区讨论,是学习SQL优化的好去处。 3. **培训与...
SQL优化小工具是一款非常实用的辅助程序,专为数据库管理员和开发人员设计,旨在帮助他们更有效地管理和优化SQL查询。这个工具的主要功能是将复杂的、难以阅读的SQL语句整理成清晰、规范的格式,提高代码的可读性...
通过对 SQL 语句执行的过程、Oracle 优化器、表之间的关联、如何得到 SQL 执行计划、如何分析执行计划等内容的讨论,可以逐步掌握 SQL 优化的过程。 在 SQL 优化过程中,需要了解性能管理、性能问题、调整的方法、...
本资源摘要信息旨在讨论SQL查询思路优化与语句优化的重要性和方法。数据库查询优化是一个关键因素,影响数据库的推广和应用。SQL查询是一个有序的查询,不同语句的使用和顺序将直接影响其查询速度。 本文将讨论优化...
文章还讨论了存储过程的优化,包括如何使用 DB_LINK 实现数据库之间的数据交换、如何使用数据库审计来监控数据库的安全性等。这些知识点可以帮助开发者提高存储过程的效率和安全性。 实践经验 文章作者拥有五年的 ...
本文将围绕“informix数据库sql查询优化”这一主题展开讨论,重点介绍SQL单表查询优化的相关知识点。 #### SQL单表查询优化概述 单表查询是指仅涉及一个表的SQL查询语句。虽然这类查询通常比多表连接查询简单,但...
在深入讨论Oracle 11g中SQL优化的知识点之前,首先需要了解Oracle Database 11g是什么。它是甲骨文公司(Oracle Corporation)推出的一款数据库管理系统,作为Oracle数据库的第11个主要版本,具有许多新的特性和增强...
### Informix入门与SQL优化详解 #### 一、Informix产品简介及安装配置 ##### Informix产品历程 Informix数据库自其诞生以来,经历了多个重要版本的迭代,从早期的Informix SE,到划时代的Online 5.0,再到如今的On...
尽管如此,我将基于标题和描述中提供的关键词“Effective MySQL之SQL语句最优化”来构建知识点。 1. SQL语句最优化的概念:在数据库管理中,对SQL语句进行优化是提高数据库性能的关键环节。最优化的SQL语句能够在...
### 数据库面试题索引SQL优化 ...通过以上的分析和讨论,我们不仅深入了解了数据库面试中常见的SQL优化和索引相关的问题,还学习了一些实用的优化技巧。这些知识点对于提高数据库应用的性能至关重要。
以下将详细讨论SQL性能优化的一些关键知识点,结合提供的文件名,我们主要关注Oracle数据库的相关内容。 1. **理解SQL语句执行过程**: SQL语句在Oracle数据库中的执行涉及解析、优化和执行三个主要阶段。解析阶段...
根据提供的文件内容,我们可以了解到文档《SQL优化指导示例2.pdf》主要讨论了在Vertica数据库系统中如何进行SQL语句的优化。Vertica是一个面向列的高性能分析数据库,特别适合于处理大规模数据集。本文的知识点涉及...
SQL性能优化是一个重要的主题,尤其是在使用像SQL Server 2000这样的早期版本时,由于资源有限,优化显得更为关键。本系列课程主要关注通过理解并应用锁和事务管理来提升SQL查询的效率。 首先,我们要了解【锁和锁...
本文主要讨论四个方面的SQL优化策略:操作符优化、SQL书写的影响、SQL语句索引的利用以及其他的优化技巧。 一、操作符优化 1. IN操作符:IN用于指定一个值列表,使得查询结果包含这些值中的任意一个。虽然IN易于...
在数据库管理领域,SQL优化是提升系统性能的关键环节,尤其是在处理大数据量时,优化SQL语句能够显著减少查询时间,改善用户体验,同时减轻服务器负担。 首先,SQL优化的基础在于理解SQL语句的工作原理。SQL是...
### SQL优化指南知识点详解 #### 一、SQL优化的重要性及目标 - **目的**: 提升SQL语句的执行效率,从而提高整个应用程序的性能。 - **适用人群**: 所有与数据库应用相关的人员。 #### 二、SQL基础知识及优化规则 -...
5. **SQL优化**(SQL Tuning):这是我们要重点讨论的部分,它能自动分析并优化SQL语句,提高查询效率。 6. **压力测试**(Load Generator):模拟高负载环境,测试数据库在极端条件下的表现。 7. **数据生成**...