##issue 1 审计表 该sql 跑的非常慢,大概10分钟没出结果
SQL: 该sql 跑的非常慢,大概10分钟没出结果
select USEC_TO_TIME(request_time),QUERY_SQL from sql_audit PARTITION(p20240809)
where QUERY_SQL like ‘%amm%’ and request_time > time_to_usec(now() - interval 14 hour) order by request_time asc
select count(*) from sql_audit PARTITION(p20240809)
数据量大概几个亿。
想资源下,有没有优化这种SQL 的可以操作的方法论
回答如下:
看看这个表对应的内部表,以及上面的索引,尽可能加上对应的条件。如 tenant_id=xxxx and svr_ip in ('xx.xx.xx.xx') and rquest_type in (1,2,3)
此外就是加 hint /*+ read_consistency(weak) parallel(16) */
从你的SQL语句来看,感觉是sql_audit这张表每天做一个分区,你要查询20240809这天的相关数据。
但你的where条件中基本没有有效的过滤条件,所以最终肯定是全扫描p20240809这个分区,而这个分区的数据量有几个亿,所以速度肯定快不了。。
尝试办法:
在你的SQL语句加上/*+ parallel(16) */ Hint吧, 应该比你原来的SQL快。