在我的 sybase 12 中,当我查看 select distinct 查询GETSORTED
的 showplan 时,我看到了 showplan 的输出。
我已经搜索了整个互联网(是的!),但似乎找不到一个链接来说明实际对数据进行排序的顺序GETSORTED
?
我有理由相信它对不同行的列中数据的大小进行排序,对于相同长度的行,它按字母顺序排序。
执行计划:
W (5): STEP 1
W (6): The type of query is INSERT.
W (7): The update mode is direct.
W (8): Worktable1 created, in allpages locking mode, for DISTINCT.
W (9):
W (10): FROM TABLE
W (11): tablename
W (12): Nested iteration.
W (13): Table Scan.
W (14): Forward scan.
W (15): Positioning at start of table.
W (16): Using …
Run Code Online (Sandbox Code Playgroud) 这是我的查询
SELECT *
FROM
(
SELECT a.*, rownum rnum
FROM
(
SELECT id, data
FROM t
ORDER BY id
) a
WHERE rownum <= HIGHER
)
WHERE rnum >= LOWER;
Run Code Online (Sandbox Code Playgroud)
我有大量数据,因此我一次获取其中的一部分,比如第一次尝试从 1 到 100,第二次尝试从 101 到 200,依此类推。
如果我执行上面的查询,它将对每个数据部分执行以下操作:
SELECT id, data
FROM t
ORDER BY id
Run Code Online (Sandbox Code Playgroud)
我认为对每个部分都这样做效率很低。我不能做一些像订购我的数据集并应用 rownum 之类的事情吗?它会有任何用处吗?