如何优化我的查询,以便我可以使用ORDER BY

By simon at 2018-02-28 • 0人收藏 • 28人看过

我在下面的查询中使用ORDER BY,但需要将近20秒才能获取 数据。

SELECT id, 
       name, 
       o.map.subject, 
       o.map.xyz 
FROM   student o 
WHERE  test = 3553 
       AND o.map.identifier = 'Abhay' 
ORDER  BY o.id desc 
FETCH first 15 ROWS only; 
何时不使用ORDER BY,如下所示,它只需要0.2秒 响应时间,这是我想要的。问题是 - 它正在提取较旧的 数据,我需要将最后15条记录插入表格学生。 有什么方法可以在不使用ORDER BY的情况下对数据进行排序?如果没有,如何 我加快查询?
SELECT id, 
       name, 
       o.map.subject, 
       o.map.xyz 
FROM   student o 
WHERE  test = 3553 
       AND o.map.identifier = 'Abhay' 
FETCH first 15 ROWS only; 

1 个回复 | 最后更新于 2018-02-28
2018-02-28   #1

查询

SELECT id, 
       name, 
       o.map.subject, 
       o.map.xyz 
FROM   student o 
WHERE  test = 3553 
       AND o.map.identifier = 'Abhay' 
ORDER  BY o.id desc 
FETCH first 15 ROWS only; 
只有在寻找行时费用很高,或者我们得到了一个 大量的行,因此我他们很贵。 如果找到那么昂贵,那么你可能需要考虑索引 在测试上,MAP_IDENTIFIER。如果即使使用该指数,分拣成本也很高, 也就是说,您有大量符合条件的行,然后是yOU 可能要考虑将ID添加到索引,以便您可以扫描索引 以下降的方式,因此避免了这种情况成本。 即使你这样做,你必须**总是有ORDER BY子句。没有 结果总是不确定的。

登录后方可回帖

Loading...