AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-431

Alex's questions

Martin Hope
Alex
Asked: 2025-04-06 16:45:49 +0800 CST

将枚举存储为 smallint 或字符串,影响性能

  • 7

我有一堆属性(数据库中的列),它们应该具有来自预定义值列表的字符串值,例如active,,inactive。pending

在数据库之外,即 javascript(前端是 deno+react),我真的希望将它们作为字符串枚举,而不是整数,因为它增加了代码的清晰度,并实际上减少了需要编写的代码量。

在数据库中我有两个选项,要么按原样存储它们(字符串),要么smallint在数据库选择/插入期间将它们转换为字符串/从字符串转换。

第二种选择的问题在于它需要在代码中进行额外的转换,而当使用 typescript 时,这种转换并不像简单的映射那么简单,因为 ts 不允许你将不同的类型重新分配给现有的 props,所以你需要复制并做更多的事情……

无论如何,我只是想问一下,如果我将它们也直接作为字符串存储在数据库中以消除转换步骤,postgres 的性能和/或大小开销是多少?我想象如果我从更改为,每条记录将增加大约 20 个字节,smallint这text会对性能产生某种影响吗?此外,这些列必须被索引,这会为每条记录增加另外 20 个字节

postgresql
  • 1 个回答
  • 97 Views
Martin Hope
Alex
Asked: 2025-04-06 01:19:21 +0800 CST

使用复合键,我是否仍然需要为所有列分别建立索引?

  • 6

如果我有一个由 3 列组成的复合键,例如

constraint some_index unique (parent_store_id, store_type, store_name),

并且我还需要能够使用where store_type = ...或进行选择查询where store_name = ...,我是否仍然需要为每一列创建单独的索引?或者上面的唯一索引可以处理这些情况吗?

postgresql
  • 2 个回答
  • 136 Views
Martin Hope
Alex
Asked: 2025-03-24 21:29:43 +0800 CST

Sqlite 计数同时也分组吗?

  • 5
select * from tblA a 
 left join tblB b on b.id = a.bId 
   group by a.bId 

如果我根据列进行分组,则只会获得具有相同bID值的记录中的第一个记录。有没有办法也可以获取每行具有相同值的记录总数bId?无需进行单独的查询...

id | bId
--------
1  |  1
2  |  1
3  |  1
4  |  2
5  |  3


so in the above query I would expect

id | bId. | counts
-------------------
1  |  1  |  3   <- 3 records with bId = 1
4  |  2  |  1
5  |  3  |  1
sqlite
  • 1 个回答
  • 28 Views
Martin Hope
Alex
Asked: 2025-02-13 21:10:09 +0800 CST

当数据库有其他读取者时,Sqlite 事务未释放

  • 6

如果我有多个数据库读取器,它们基本上是以“读取”模式打开数据库文件的 Sqlite 实例,那么对于以“创建”模式打开数据库的单个写入器来说,在所有读取器关闭数据库之前无法释放事务,这正常吗?

我试图弄清楚这是 sqlite 的正常行为,还是我正在使用的特定 sqlite 库的错误/限制。

我不明白为什么作者需要等待读者停止使用数据库文件,这对我来说没有意义,因为读者无法更改数据

sqlite
  • 3 个回答
  • 39 Views
Martin Hope
Alex
Asked: 2022-12-05 05:29:42 +0800 CST

选择行,但删除具有重复列的行

  • 3

我相信这是一个非常简单的查询,但由于某种原因它在 Postgres 中不起作用(它在其他数据库中起作用)

这就是 db schema kooks 的样子:

tableA(
   id integer,
   ...
)

tableB(
   id integer
   tableA_id integer -- foreign key to tableA
   ...
)

我想为 tableB 选择记录,与 tableA 连接,然后按 tableA_id 分组:

SELECT * from tableB b INNER JOIN tableA ON b.tableA_id = tableA.id
GROUP BY tableA_id
LIMIT 20

除了 Postgres,它在任何地方都可以正常工作,它会抛出臭名昭著的“id 必须出现在 group by 中或用于聚合函数”错误。但是如果我把 b.id 放进去group by,我就不会删除重复的记录......

postgresql
  • 2 个回答
  • 46 Views
Martin Hope
Alex
Asked: 2011-12-11 05:03:09 +0800 CST

按 DATETIME 排序比按 TIMESTAMP 慢?

  • 2

我有一个 DATETIME 键,我在其上对结果进行排序,查询运行速度很慢。如果我将其更改为 TIMESTAMP 会运行得更快吗?

因为我注意到按编号键排序几乎是立即完成的。

mysql database-design
  • 3 个回答
  • 7211 Views
Martin Hope
Alex
Asked: 2011-12-10 16:11:10 +0800 CST

我有重复的键索引吗?

  • 3
CREATE TABLE relations (

  object_id BIGINT(20) NOT NULL PRIMARY KEY,
  object_term BIGINT(20) NOT NULL,

  UNIQUE KEY link(object_id, object_term),

  CONSTRAINT fk_term FOREIGN KEY(object_term)
    REFERENCES terms(id) ON DELETE CASCADE ON UPDATE RESTRICT,

  CONSTRAINT fk_object FOREIGN KEY(object_id)
    REFERENCES objects(id) ON DELETE CASCADE ON UPDATE RESTRICT

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

我有一种感觉,我索引了object_id3 次和object_term2 次。我对吗?

如果是,我该如何解决这个问题并仍然保持约束和强制(object_id, object_term)是唯一的?


好的,第二次尝试:

CREATE TABLE relations (

  object_id BIGINT(20) NOT NULL,
  object_term BIGINT(20) NOT NULL,

  PRIMARY KEY link(object_id, object_term),

  CONSTRAINT fk_term FOREIGN KEY(object_term)
    REFERENCES terms(id) ON DELETE CASCADE ON UPDATE RESTRICT,

  CONSTRAINT fk_object FOREIGN KEY(object_id)
    REFERENCES objects(id) ON DELETE CASCADE ON UPDATE RESTRICT

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

这是否更好?

mysql database-design
  • 1 个回答
  • 1831 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve