求解:db2数据库表Tab中无id,且数据量较大,如何指定查询中间十条数据,不是前十条,谢了。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求解:db2数据库表Tab中无id,且数据量较大,如何指定查询中间十条数据,不是前十条,谢了。相关的知识,希望对你有一定的参考价值。

参考技术A select * from 表名 where 条件语句 fetch first 10 only 这是前10行的

select * from (select 字段, row_number() over() as rn where *** oder by****) as tmp
where rn> 50 and rn <=100

这是50 至100行追问

DB2 中没有row_number() 函数,麻烦确定后再回答,谢谢。

追答

没有row_number() 函数?你是什么版本 ,我的是V 9.5

本回答被提问者采纳

数据在 Datastax Astra DB 中无组织地存储

【中文标题】数据在 Datastax Astra DB 中无组织地存储【英文标题】:Data is storing unorganized in Datastax Astra DB 【发布时间】:2021-11-28 02:36:03 【问题描述】:

我已将我的 csv 文件上传到我的 Datastax Astra DB 中。问题是为什么数据在上传时,行变得杂乱无章或随机。假设在我的 csv 中,行 id 是 1、2、3,... 然后当我将其上传到我的数据库时,它会被上传到乱码/重新排列,比如行 id 2、1、4、5、3 .. .由于这个原因,当我在python中通过http_methods请求数据时,数据也随之而来,因为它是以无组织的方式存储的。为什么会这样?有没有办法解决这个问题?

【问题讨论】:

【参考方案1】:

它归结为 Cassandra 如何存储您的数据。我假设您只在主键中定义 partition key。分区键负责数据如何存储在集群中的节点上。如果您希望数据按特定顺序排列,则需要定义主键的第二部分,clustering key

我建议看一下这个答案,它很好地解释了订购 https://***.com/a/35708544/13078421

【讨论】:

嗨@dwettlaufer。谢谢回复。我浏览了链接和由分区键和集群键组成的主键的想法。我在链接中看到他们使用“dept”作为分区键和“empno”。作为聚类键。如果我错了,请纠正我。但是对于我的问题,我想将“Id”列设置为我的分区键,并且我想按“Id”本身对行进行排序。我有列 ['Id'、'Sepallength'、'Sepalwidth'、'Petallength'、'Petalwidth'、'Species']。我怎样才能做到这一点 ?我可以使用相同的密钥吗?如果不是,解决方法是什么?我正在使用 astra.datastax 加载数据来上传。【参考方案2】:

为什么会这样?

dwettlaufer 的回答很准确,但我将提供一个视觉表示来帮助理解这里发生的事情:

> SELECT id,token(id),name FROM numbers ;

 id | system.token(id)     | name
----+----------------------+-------
  5 | -7509452495886106294 |  five
  1 | -4069959284402364209 |   one
  2 | -3248873570005575792 |   two
  4 | -2729420104000364805 |  four
  3 |  9010454139840013625 | three

(5 rows)

Astra DB 中的数据按分区键的哈希标记值顺序存储。由于散列,数值很可能以不同的顺序排列。

有没有办法解决这个问题?

如前所述,排序顺序只能在分区键中强制执行。因此,如果使用不同的列作为分区键,则可以使用id 对其中的数据进行排序。

考虑一个如下所示的表格:

CREATE TABLE dept_numbers (
    dept int,
    id int,
    name TEXT,
PRIMARY KEY(dept,id));

然后这样的事情会起作用:

> SELECT * FROM dept_numbers WHERE dept=1;

 dept | id | name
------+----+-------
    1 |  1 |   one
    1 |  2 |   two
    1 |  3 | three
    1 |  4 |  four
    1 |  5 |  five

(5 rows)

请注意,所有使用 Astra DB 的查询都应该有一个WHERE 子句。没有它,将导致昂贵的表扫描。

【讨论】:

以上是关于求解:db2数据库表Tab中无id,且数据量较大,如何指定查询中间十条数据,不是前十条,谢了。的主要内容,如果未能解决你的问题,请参考以下文章

db2数据库表数据量太大如何横向拆分

C# 如何实现sqlserver 2008中两个数据库中两张表的关联查询。 如: sleect * from db1.tab1,db2.tab2;

Python爬虫:爬取某网站关键词对应商品ID,且存入DB2数据库

DB2数据库关于delete in id和batch delete的性能对比

db2删除表中数据

商城数据库设计——套餐