我在數據庫表中有百萬條記錄,其中包含帳戶號,地址和更多列。我想用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' - 或者其他的東西。 –