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

时间:2013-08-15 14:21:37

标签: sql performance oracle

我有一个简单的SQL查询:

select * from recent_cases where user_id=1000000 and case_id=10095;

在Oracle中执行它需要0.4秒。当我连续发出20个请求时,需要> 10秒。

表' recent_cases'有4列:ID,USER_ID,CASE_ID和VISITED_DATE。目前该表中只有38条记录。

此表上还有3个索引:在ID列,USER_ID列和on(USER_ID,CASE_ID)列对。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

一种理论 - 该表在末尾附近有一个非常大的数据段和高水位线,但统计数据并没有促使优化器使用索引。因此,您正在进行慢速全表扫描。您可以ALTER TABLE ...移动并重建索引以解决此类问题,或者COALESCE。

答案 1 :(得分:0)

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

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

http://www.dba-oracle.com/t_oracle_analyze_table.htm

http://docs.oracle.com/cd/B28359_01/server.111/b28310/general002.htm