【发布时间】:2017-02-08 08:52:00
【问题描述】:
我有一个包含 400 万条记录的表。这个查询运行速度很快
SELECT Id
FROM Table1
WHERE contains(Text,'great OR good') >0
OFFSET 10 ROWS FETCH NEXT 3 ROWS ONLY
----------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 3 | 225 | 6035 (0)| 00:00:01 |
|* 1 | VIEW | | 3 | 225 | 6035 (0)| 00:00:01 |
|* 2 | WINDOW NOSORT STOPKEY | | 35926 | 64M| 6035 (0)| 00:00:01 |
| 3 | TABLE ACCESS BY INDEX ROWID| Table1 | 35926 | 64M| 6035 (0)| 00:00:01 |
|* 4 | DOMAIN INDEX | IDX_ADS_TEXT | | | 6035 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------
但是这个查询
SELECT Id
FROM Table1
WHERE contains(Text,'great OR good') >0
ORDER BY SomeDateColumn
OFFSET 10 ROWS FETCH NEXT 3 ROWS ONLY
------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 35926 | 2947K| | 20265 (1)| 00:00:01 |
|* 1 | VIEW | | 35926 | 2947K| | 20265 (1)| 00:00:01 |
|* 2 | WINDOW SORT PUSHED RANK | | 35926 | 64M| 70M| 20265 (1)| 00:00:01 |
| 3 | TABLE ACCESS BY INDEX ROWID| Table1 | 35926 | 64M| | 6035 (0)| 00:00:01 |
|* 4 | DOMAIN INDEX | IDX_ADS_TEXT | | | | 6035 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------
运行速度超级慢。我该怎么办?原因是什么?我在SomeDateColumn上有索引
【问题讨论】:
-
您的查询返回多少行? SomeDateColumn 上的索引在这种情况下不会有帮助。你能把这两个查询的执行计划贴出来,你就会明白为什么了。
-
添加执行计划,谢谢
-
@BobC
Ascending and Descending Indexesdocs.oracle.com/cd/B19306_01/server.102/b14200/… 呢? -
他们呢?您没有通过给出输出顺序的索引访问表。
-
那么有比预先排序的物化视图更好的解决方案吗?如果
craiglist将在Oracle 上运行,那么允许通过过滤器快速搜索和按日期/价格排序的解决方案是什么。因为这基本上就是我需要的newyork.craigslist.org/search/…
标签: oracle12c