为什么SQL查询要花这么长时间才能返回结果?

为什么SQL查询要花这么长时间才能返回结果?,sql,performance,oracle,Sql,Performance,Oracle,我有一个简单的SQL查询: select * from recent_cases where user_id=1000000 and case_id=10095; 在Oracle中执行它最多需要0.4秒。当我连续做20个请求时,需要>10秒 “最近的案例”表有4列:ID、用户ID、案例ID和访问日期。目前该表中只有38条记录 此外,该表上有3个索引:on ID列、on USER_ID列和on(USER_ID、CASE_ID)列对 有什么想法吗?一种理论——该表的数据段非常大,接近尾端时有一个高

我有一个简单的SQL查询:

select * from recent_cases where user_id=1000000 and case_id=10095;
在Oracle中执行它最多需要0.4秒。当我连续做20个请求时,需要>10秒

“最近的案例”表有4列:ID、用户ID、案例ID和访问日期。目前该表中只有38条记录

此外,该表上有3个索引:on ID列、on USER_ID列和on(USER_ID、CASE_ID)列对


有什么想法吗?

一种理论——该表的数据段非常大,接近尾端时有一个高水位线,但统计数据并没有促使乐观者使用索引。因此,您将得到一个缓慢的全表扫描。你们可以改变桌子。。。移动并重建索引以修复或合并此类问题。

Oracle数据库有一个名为“分析表”的函数。此函数可以大大加快select语句的速度,即使表中只有几行

以下是一些可能对您有所帮助的链接:


您能否发布SQL*Plus会话的输出,以演示问题?您是否运行了解释计划?请粘贴您的表定义,而不是对它们的解释或描述。我们需要查看实际的表定义。也许你在索引方式上犯了一个错误。你有没有尝试过没有索引的查询?你能做到吗?并非总是索引是进行快速查询的最佳选择(而且它们对38条记录表没有任何意义)服务器上还运行什么?您确定“table”实际上不是一个视图吗?很长一段时间以来,“analysistable”命令一直不赞成使用DBMS_Stats。