我有一个简单的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)列对。
有什么想法吗?
答案 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