我的目标是使用简单的“ where-condition”定义列分区和针对该列的查询,这样一个查询每秒可以返回一亿条记录。
我的Oracle表中的我的ID列如下所示:
000000bd-104e-4fd6-a791-c5422f29e1b5
0000016e-7e68-4453-b360-7ffd1627dc22
00000196-2dba-4532-8cba-1e853c466697
0000025a-cfae-41b4-b8e7-ef854d49e54a
00000260-8bdb-4b30-acdb-5a67efd4dbfe
00000366-552d-48a0-b8a1-20190ccd087c
000003f2-d6d8-4a51-96cc-407063bc568b
000003ff-3d16-4e88-9cf3-bcdf01c39a2b
00000487-1e6c-4d6d-a683-6f11d517962c
000004cc-6359-4a9a-aa2a-70a6b73a06b1
00000536-37ee-471c-a8e0-3d233b8102f5
此表有billions条记录,并且此列是主键。我正在寻找一种对该列值进行分区的方法,以便在运行查询时可以基于主键上的某些“ where-condition”获得结果。否则,如果未对列进行某种优化,Oracle将被迫在一个查询中读取整个表。
作为示例,我能够创建这样的分区:
Select mod(rownum,16), ID from SH.MY_TABLE Where rownum<=1000
关于如何为列定义分区或我正在寻找的查询性能是否有可能的任何建议?
要对值进行排序,可以使用ORDER BY,默认情况下是ASC更改,您需要在查询中使用ORDER BY DESC。