我怀疑以下查询的速度和结果。有人能给我解释吗? (这些为Oracle数据库编写的查询)
假设我有一个表 table1(ID,itemID,trnx_date,balance,...)。我希望得到一个项目的最新余额。
查询1:
SELECT balance FROM table1 WHERE ID =(SELECT1(ID)来自table1 WHERE itemID = item_id );
查询2:
SELECT balance FROM table1 WHERE itemID = item_id AND rownum = 1 ORDER BY ID DESC;
其中 item_id 是变量。
因此,这两个查询会给出相同的结果吗?哪一个更快,还是有任何其他查询比它们更快?
由于
答案 0 :(得分:2)
Rownum
是在排序之前计算的(我之前的错误,我之前没有使用过Oracle)。因此,此查询与第一个查询相同:
SELECT
balance
FROM
(SELECT balance FROM table1 WHERE itemID = *item_id* ORDER BY ID DESC)
WHERE
rownum = 1;
在这种情况下,给定ID的索引,这可能稍微更快。
为什么不自己运行它们来对它们进行基准测试?