我在数据库表中有百万条记录,其中包含帐户号,地址和更多列。我想用desc命令排序100行,我用rownum来做这件事,但查询需要很长时间才能执行,因为它先扫描整个表,然后按照排序顺序进行排序,然后应用rownum。SQL调优,长时间运行的查询+ rownum
什么是最小化查询执行时间的解决方案?
例如:
select *
from
(select
acc_no, address
from
customer
order by
acc_no desc)
where
ROWNUM <= 100;
您是否在客户表中定义了索引? – Sumit
由于Sumit说你应该有一个索引,我认为acc_no是唯一的?如果它不是您的主键,那么至少应该在索引 – MarkD
中涵盖哪些RDBMS是用于此目的的?请添加一个标签来指定您是使用'mysql','postgresql','sql-server','oracle'还是'db2' - 或者其他的东西。 –