SQL数据库是否可以支持;仅插入“;模式
最近几年,“仅插入”方法越来越流行。 对于那些使用SQL DB的人,您可能知道,在大量的更新查询中,DB正在锁定行,您开始遇到“瓶颈”。仅插入模式是仅使用插入(无更新)并始终检索数据库中的最新项 我面临的问题是SELECT查询,因为数据库中有一个字段可以用于多个记录,如果我想用它进行查询,我永远不会知道我什么时候获得了上面字段的所有最新的记录(除非我使用的是GROUP,这将是无效的) 方案示例: 假设我有以下计划:SQL数据库是否可以支持;仅插入“;模式,sql,postgresql,insert-update,Sql,Postgresql,Insert Update,最近几年,“仅插入”方法越来越流行。 对于那些使用SQL DB的人,您可能知道,在大量的更新查询中,DB正在锁定行,您开始遇到“瓶颈”。仅插入模式是仅使用插入(无更新)并始终检索数据库中的最新项 我面临的问题是SELECT查询,因为数据库中有一个字段可以用于多个记录,如果我想用它进行查询,我永远不会知道我什么时候获得了上面字段的所有最新的记录(除非我使用的是GROUP,这将是无效的) 方案示例: 假设我有以下计划: CREATE TABLE users ( id SERIAL
CREATE TABLE users
(
id SERIAL NOT NULL
CONSTRAINT users_pkey
PRIMARY KEY,
first_name VARCHAR(255),
last_name VARCHAR(255),
username VARCHAR(255),
email VARCHAR(255),
password VARCHAR(255),
account_id INTEGER,
created_at TIMESTAMP NOT NULL
);
现在,假设我有以下与账号1相关的用户(使用account\u id):
1.无名氏
2.耆那教
如果我想在仅插入模式下编辑John Doe姓氏,我将插入一条新记录,当我想检索它时,我将运行以下查询:
SELECT * from users WHERE email='jhon.doe@test.com' ORDER BY created_at Desc limit 1;
问题是如果我想检索所有account 1用户,我需要做什么?如何防止使用group by执行糟糕的查询
下面的查询将返回3条记录,尽管我只有2个用户
SELECT * from users WHERE account_id=1;
您的问题的答案在上是不同的(在Postgres中)。但是,不清楚如何定义用户。我希望有一个
user\u id
,但可能email
就是为了达到这个目的
查询如下所示:
select distinct on (email) u.*
from users u
where account_id = 1
order by email, created_at desc;
为了提高性能,您需要一个关于
用户的索引(帐户id、电子邮件、在desc创建)
您的问题的答案是在
上不同(在Postgres中)。但是,不清楚如何定义用户。我希望有一个user\u id
,但可能email
就是为了达到这个目的
查询如下所示:
select distinct on (email) u.*
from users u
where account_id = 1
order by email, created_at desc;
为了提高性能,您需要一个关于
用户的索引(帐户id、电子邮件、在desc创建)
您的代码是Postgres代码,因此我删除了MySQL标记。在您的数据模型中,您需要一个user\u id
来识别实际用户。“SQL数据库是否可以支持“仅插入”模式?”MySQL或多或少会支持这种模式,因为问题是用MySQL标记的,所以不允许删除和更新。可以使用(PostgreSQL称之为外来数据包装器)要在PostgreSQL中编程自己的表引擎,使PostgreSQL获得MySQL存档引擎的支持,我只需要创建一个纯可插入表。。但现在我想,只需简单地授予选择/插入权限,并确保撤销将要使用它的用户的更新/删除权限..可能重复的我不理解您试图解决的问题。更新锁定行有什么问题?您仍然可以读取该行而不受锁的影响。与偶尔锁定一行相比,“仅插入”表上的查询将有更多的开销您的代码是Postgres代码,因此我删除了MySQL标记。在您的数据模型中,您需要一个user\u id
来识别实际用户。“SQL数据库是否可以支持“仅插入”模式?”MySQL或多或少会支持这种模式,因为问题是用MySQL标记的,所以不允许删除和更新。可以使用(PostgreSQL称之为外来数据包装器)要在PostgreSQL中编程自己的表引擎,使PostgreSQL获得MySQL存档引擎的支持,我只需要创建一个纯可插入表。。但现在我想,只需简单地授予选择/插入权限,并确保撤销将要使用它的用户的更新/删除权限..可能重复的我不理解您试图解决的问题。更新锁定行有什么问题?您仍然可以读取该行而不受锁的影响。与偶尔锁定一行相比,“仅插入”表上的查询将有更多的开销感谢反馈,users表仅用于示例,您可以假设存在类似于user_id的字段感谢反馈,users表仅用于示例,您可以假设存在类似于user_id的字段