
正文
oracle游标查询慢,oracle sql 游标
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
oracle数据库约200W数据查询非常慢,查询需要10几秒,经常查询超时,这个...
1、这种情况下,可以尝试使用 BULK COLLECT 来批量加载。下面是 Oracle 游标处理II - 使用BULK COLLECT 的例子。
2、根据你的查询条件,建立相应的索引,就可以提高查询效率了。在硬件基本符合要求的情况下,通过索引检索,如果结果集只有几十条数据的话,一般都可以降低到毫秒级的处理速度。
3、调整数据结构的设计。这一部分在开发信息系统之前完成,程序员需要考虑是否使用ORACLE数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。 调整应用程序结构设计。
4、目标数据库是否开启了服务。目标数据库是否开启了监听。目标服务器是否有防火墙或是网络策略限制不允许访问。检查下访问的配置是否正确,如IP、端口号、用户信息等等。访问账号的连接数是否过多等等。
5、=或操作符,否则将引擎放弃使用索引而进行全表扫描。
相关问答
Q1: oracle走索引查询变慢
1、研究分析,问题就出在txn_time上,如果走索引会非常慢,反而不走索引(/ +no_index(t) /)速度反而很快。
2、首先,有可能是因为你的统计信息没有更新,使用命令Analyze table tablename compute statistics;其次,你的where条件可能用到了函数,使得执行计划没有用到索引;再之,要看看SQL的执行计划,具体问题具体分析。
3、,经常被访问的表,会有内存缓存,count会快些,不常访问的表,内存缓存少,物理读磁盘多,就慢些。2,使用索引或不使用索引可能差别很大,可以指定使用某个索引或指定不适用索引对比测试一下。
4、能确定很大程度上是表索引的问题,请检查你的表都对哪些字段设置了索引;创建索引的方法如下 create index t2_a on t 2(a,[...],[...]);括号里的字段可以写多个。对应你查询比较频繁的列字段。
Q2: pl_sql打开返回查询游标很慢
sql语句慢可以根据使用改写sql语句的写法,建立索引,建立分区等优化手段来解决。单纯游标速度慢,可以考略批量执行 bulk collect这种方式提取数据 使用forall 替代for 循环也可以提升效率。
如果提交时关闭游标的选项为关,则 COMMIT 语句并不关闭任何打开的游标,而且滚动锁被保留到提交之后,以维护对所提取数据的隔离。所获取滚动锁的类型取决于游标并发选项和游标 SELECT 语句中的锁提示。
MS SQL Server查询优化方法查询速度慢的原因很多,常见如下几种没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)I/O吞吐量小,形成了瓶颈效应。没有创建计算列导致查询不优化。
内存不足网络速度慢查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
打开慢有很多种原因 网速慢 表数据量大 电脑比较卡 你可以查下这张表的数据有多少条,如果量很多,这种慢就显得正常了。
Q3: 如何提高oracle的查询速度
(1)假设内存有512M,这通常是小型应用。建议Oracle的SGA大约240M,其中:共享池(SHARED_POOL_SIZE)可以设置60M到80M,根据实际的用户数、查询等来定。
对于经常查询的大表,可以放在独立表空间,有利于查询性能提高。E.日志文件与数据文件分开放,提高数据库安全性。表分区管理。
创建分区表,使查询时的大表尽量分割成小表。Oracle提供范围分区、列表分区、Hash分区以及复合分区,具体选择哪种分区最优,需要根据你的业务数据来确定。创建索引,创建合适的索引可以大大提高查询速度。
设置cursor_sharing=FORCE 或SIMILAR ;将常用的小表、索引钉在数据缓存KEEP池中 ,设置optimizer_max_permutations ,调整排序参数 。
建立分区表的话,是可以根据所分区的内容进行查询的,比如单独查询2011年度的记录,但是因为你已经有了一定的历史数据,所以相对比较麻烦,建议百度一下。
查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE %parm1%—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用。解决办法:其实只需要对该脚本略做改进,查询速度便会提高近百倍。
关于oracle游标查询慢和oracle sql 游标的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








