另类SQL优化

简介: http://www.itpub.net/428148.html我最近遇到一个sql的优化问题,由于受到许多限制,想了许久终于找到解决方法: sql语句如下: SELECT COUNT (*) FROM kc24 WHERE ...

http://www.itpub.net/428148.html

我最近遇到一个sql的优化问题,由于受到许多限制,想了许久终于找到解决方法:
sql语句如下:

SELECT COUNT (*) FROM kc24
WHERE aae040 >= :b1
AND aae040 AND akb020 LIKE :b3 AND akc021 LIKE :b4 AND aka130 LIKE :b5
AND aab001 LIKE :b6 AND SUBSTR (aae072, 1, 1) != '_'
AND akc501 = :b7

KC24表上在akb020加上其他两个字段(包括aae072)作为主键索引,aae040为日期型
变量,并建立了索引。由于akb020这个字段非常特殊,其所有的值都是一样的。表大小
120M,记录数为703XXX,主键索引PK_KC24为29M(压缩了字段1),i_kc24_aae040索引
为14M.我重新分析了表,我发现执行计划还是使用PK_KC24索引,这样实际上还不如选择
全表扫描。
我又分析了表,加入直方图的统计,执行计划依旧。最终我发现optimizer_index_cost_adj,
optimizer_index_caching设置影响了执行计划。不过很奇怪的是如果没有这一行
AND SUBSTR (aae072, 1, 1) != '_',执行计划就会使用aae040的索引。

optimezer*的参数我不能再修改,因为这个参数已经经过测试,已经设置在最佳模式。
使用的数据库是oracle8i的标准版,程序是第3方开发的,又不能修改代码,标准版又不支
持大纲(我个人并不喜欢使用这种方式),到这里优化陷入困境。。。。

后来我想如果能够修改统计信息,人为的加大PK_KC24索引的统计大小,就可以改变执行计划,
仔细看看书,dbms_stats可以修改统计信息,不过修改统计信息,一定要检查相关kc24的sql语句,
否则可能影响别的sql语句执行计划。

EXECUTE SYS.DBMS_STATS.set_index_stats (OWNNAME=>'TEST', INDNAME=>'PK_KC24', numlblks=> 8000);

在检查执行计划,发现能使用aae040索引,并且在检查相关的kc24的sql语句,没有问题,整个优化完成。


目录
相关文章
|
1月前
|
SQL 存储 关系型数据库
如何巧用索引优化SQL语句性能?
本文从索引角度探讨了如何优化MySQL中的SQL语句性能。首先介绍了如何通过查看执行时间和执行计划定位慢SQL,并详细解析了EXPLAIN命令的各个字段含义。接着讲解了索引优化的关键点,包括聚簇索引、索引覆盖、联合索引及最左前缀原则等。最后,通过具体示例展示了索引如何提升查询速度,并提供了三层B+树的存储容量计算方法。通过这些技巧,可以帮助开发者有效提升数据库查询效率。
132 2
|
13天前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
22天前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
77 10
|
21天前
|
SQL 存储 缓存
SQL Server 数据太多如何优化
11种优化方案供你参考,优化 SQL Server 数据库性能得从多个方面着手,包括硬件配置、数据库结构、查询优化、索引管理、分区分表、并行处理等。通过合理的索引、查询优化、数据分区等技术,可以在数据量增大时保持较好的性能。同时,定期进行数据库维护和清理,保证数据库高效运行。
|
1月前
|
SQL 资源调度 分布式计算
如何让SQL跑快一点?(优化指南)
这篇文章主要探讨了如何在阿里云MaxCompute(原ODPS)平台上对SQL任务进行优化,特别是针对大数据处理和分析场景下的性能优化。
|
1月前
|
SQL 监控 数据库
慢SQL对数据库写入性能的影响及优化技巧
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生显著的不利影响
|
1月前
|
SQL 关系型数据库 PostgreSQL
遇到SQL 子查询性能很差?其实可以这样优化
遇到SQL 子查询性能很差?其实可以这样优化
93 2
|
1月前
|
SQL 存储 数据库
慢SQL对数据库写入性能的影响及优化技巧
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生显著的不利影响
|
1月前
|
SQL 数据处理 数据库
SQL语句优化与查询结果优化:提升数据库性能的实战技巧
在数据库管理和应用中,SQL语句的编写和查询结果的优化是提升数据库性能的关键环节
|
1月前
|
SQL 存储 数据库
慢SQL对数据库写入性能的影响及优化策略
在数据库管理系统中,慢SQL(即执行缓慢的SQL语句)不仅会影响查询性能,还可能对数据库的写入性能产生不利影响
下一篇
无影云桌面