相关疑难解决方法(0)

如何使用postgres在表中的第2列或第3列之后的表中添加新列?

如何使用postgres在表中的第2列或第3列之后的表中添加新列?

我的代码如下所示

ALTER TABLE n_domains ADD COLUMN contract_nr int after owner_id
Run Code Online (Sandbox Code Playgroud)

postgresql

57
推荐指数
3
解决办法
7万
查看次数

jpa中生成的表中的排序错误

这应该是一件相当简单的事情,但我正在努力.

我希望像这样生成一个表:

id 
organizationNumber 
name

但是,当我查看数据库时,我发现排序错误.有谁知道我如何强制hibernate/jpa生成正确排序的表?

desc Organization;
+--------------------+--------------+------+-----+---------+----------------+
| Field              | Type         | Null | Key | Default | Extra          |
+--------------------+--------------+------+-----+---------+----------------+
| id                 | bigint(20)   | NO   | PRI | NULL    | auto_increment | 
| name               | varchar(255) | NO   |     | NULL    |                | 
| organizationNumber | varchar(255) | NO   | UNI | NULL    |                | 
+--------------------+--------------+------+-----+---------+----------------+

这就是我的实体bean的样子:

@Entity
@NamedQuery(name = "allOrganizations", query = "SELECT org FROM Organization org order by name")
public class Organization {

    private …

java hibernate jpa

54
推荐指数
5
解决办法
2万
查看次数

如何在特定列之后在TSQL中添加列?

我有一张桌子:

MyTable
    ID
    FieldA
    FieldB
Run Code Online (Sandbox Code Playgroud)

我想改变表并添加一列,如下所示:

MyTable
    ID
    NewField
    FieldA
    FieldB
Run Code Online (Sandbox Code Playgroud)

在MySQL中我会这样:

ALTER TABLE MyTable ADD COLUMN NewField int NULL AFTER ID;
Run Code Online (Sandbox Code Playgroud)

一条线,漂亮,简单,效果很好.我如何在微软的世界里做到这一点?

t-sql alter-table

37
推荐指数
2
解决办法
9万
查看次数

可以为空的列占用PostgreSQL中的额外空间吗?

我有一个包含7列的表,其中5列将为null.我将有一个空列int,text,date,boolean,和money数据类型.该表将包含数百万行,其中包含许多空值.我担心空值会占用空间.

另外,你知道Postgres索引空值吗?我想阻止它索引空值.

postgresql indexing null database-design

26
推荐指数
2
解决办法
5439
查看次数

postgres表中列的顺序是否会影响性能?

在Postgres中,CREATE TABLE语句中列的顺序是否会影响性能?考虑以下两种情况:

CREATE TABLE foo (
  a      TEXT, 
  B      VARCHAR(512),
  pkey   INTEGER PRIMARY KEY,
  bar_fk INTEGER REFERENCES bar(pkey),
  C      bytea
); 
Run Code Online (Sandbox Code Playgroud)

CREATE TABLE foo2 (
  pkey   INTEGER PRIMARY KEY,
  bar_fk INTEGER REFERENCES bar(pkey),
  B      VARCHAR(512),      
  a      TEXT, 
  C      bytea
);
Run Code Online (Sandbox Code Playgroud)

性能foo2会比foo列更好的字节对齐更好吗?当Postgres执行a时CREATE TABLE它是否遵循指定的列顺序,或者它是否按字符对齐或性能的最佳顺序重新组织列?

postgresql performance database-design

23
推荐指数
1
解决办法
4200
查看次数

了解Postgres行大小

我得到了一个大的(> 100M行)Postgres表,其结构为{integer,integer,integer,timestamp without time zone}.我期望一行的大小为3*整数+ 1*时间戳= 3*4 + 1*8 = 20字节.

实际上,行大小pg_relation_size(tbl) / count(*)= 52字节.为什么?

(不对表进行删除:pg_relation_size(tbl, 'fsm')〜= 0)

postgresql storage database-design types

23
推荐指数
2
解决办法
1万
查看次数

PostgreSQL独特约束中的多个可空列

我们有一个遗留数据库模式,有一些有趣的设计决策.直到最近,我们才支持Oracle和SQL Server,但我们正在尝试添加对PostgreSQL的支持,这引发了一个有趣的问题.我搜索了Stack Overflow和其他互联网,我不相信这种特殊情况是重复的.

对于唯一约束中的可空列,Oracle和SQL Server的行为都相同,这实际上是在执行唯一检查时忽略NULL列.

假设我有以下表格和约束:

CREATE TABLE EXAMPLE
(
    ID TEXT NOT NULL PRIMARY KEY,
    FIELD1 TEXT NULL,
    FIELD2 TEXT NULL,
    FIELD3 TEXT NULL,
    FIELD4 TEXT NULL,
    FIELD5 TEXT NULL,
    ...
);

CREATE UNIQUE INDEX EXAMPLE_INDEX ON EXAMPLE
(
    FIELD1 ASC,
    FIELD2 ASC,
    FIELD3 ASC,
    FIELD4 ASC,
    FIELD5 ASC
);
Run Code Online (Sandbox Code Playgroud)

在Oracle和SQL Server上,保留任何可为空的列NULL将导致仅对非空列执行唯一性检查.所以以下插入只能执行一次:

INSERT INTO EXAMPLE VALUES ('1','FIELD1_DATA', NULL, NULL, NULL, NULL );
INSERT INTO EXAMPLE VALUES ('2','FIELD1_DATA','FIELD2_DATA', NULL, NULL,'FIELD5_DATA');
-- These will succeed when they should violate …
Run Code Online (Sandbox Code Playgroud)

sql postgresql null database-design unique-constraint

16
推荐指数
3
解决办法
3875
查看次数

位掩码的整数和位(n)数据类型之间有什么区别吗?

我在那有确定某些国家(例如,几个布尔列的PostgreSQL数据库的表的工作published,visible等等).我想创建一个单独的状态列,它将以位掩码的形式存储所有这些值以及可能的新值.在这种情况下integer和之间有什么区别bit(n)吗?

这将是一个相当大的表,因为它存储用户通过Web界面创建的对象.所以我想我必须为这个列使用(部分)索引.

postgresql bitmask sqldatatypes postgresql-9.0

15
推荐指数
1
解决办法
8325
查看次数

PostgreSQL:如何构建和索引与时间相关的数据以获得最佳查询性能?

问题:

我在数据库中有与时间相关的数据,我正在努力以某种方式组织,构造和索引数据,以便用户可以有效地检索它; 即使简单的数据库查询也需要更长的时间

项目背景:

虽然这是一个纯数据库问题,但某些上下文可能有助于理解数据模型:

该项目围绕着对大型复杂机器进行研究.我对这台机器本身并不了解,但实验室里有传言说那里有一个磁通电容器 - 我想昨天,我发现薛定谔猫的尾巴悬在它旁边;-)

我们在机器运行时测量许多不同的参数,使用位于整个机器上的传感器,在一段时间内以一定的间隔在不同的测量点(所谓的).我们不仅使用一个设备来测量这些参数,而且测量它们的整个范围; 他们的测量数据质量不同(我认为这涉及采样率,传感器质量,价格和我不关心的许多其他方面); 该项目的一个目的实际上是建立这些设备之间的比较.您可以将这些测量设备可视化为一堆实验室手推车,每个手推车都有许多连接到机器的电缆,每个电缆都提供测量数据.

数据模型:

每个参数的每个点和每个设备都有测量数据,例如在6天的时间内每分钟一次.我的工作是将数据存储在数据库中,并提供对它的有效访问.

简而言之:

  • 设备具有唯一名称
  • 一个参数也有一个名字; 它们并不是唯一的,所以它也有一个ID
  • 一个地方有一个ID

项目数据库当然更复杂,但这些细节似乎与问题无关.

  • 测量数据索引具有ID,测量完成时的时间戳以及对设备的参考和进行测量的点
  • 测量数据具有参数和实际测量的参考

最初,我已将测量数据值建模为具有自己的ID作为主键; n:m测量数据索引和值之间的关系是一个单独的表,只存储了index:valueID对,但由于该表本身消耗了相当多的硬盘空间,我们将其消除并将值ID更改为存储ID的简单整数它属于的测量数据索引; 现在,测量数据值的主键由该ID和参数ID组成.

旁注:当我创建数据模型时,我仔细遵循常见的设计指南,如3NF和适当的表约束(如唯一键); 另一个经验法则是为每个外键创建一个索引.我怀疑测量数据索引/值表与'严格'3NF的偏差可能是我现在看到的性能问题的原因之一,但改变数据模型并没有解决问题.

DDL中的数据模型:

注意:此代码的更新在下面进一步说明.

下面的脚本创建了数据库和所有涉及的表.请注意,还没有明确的索引.在运行此操作之前,请确保您没有so_test使用任何有价值的数据调用数据库...

\c postgres
DROP DATABASE IF EXISTS so_test;
CREATE DATABASE so_test;
\c so_test

CREATE TABLE device
(
  name VARCHAR(16) NOT NULL,
  CONSTRAINT device_pk PRIMARY KEY (name)
);

CREATE …
Run Code Online (Sandbox Code Playgroud)

sql postgresql indexing performance database-design

15
推荐指数
2
解决办法
3459
查看次数

如果所有列值都为true,则返回true

在PostgreSQL中有一种更快的方法来基本上在几行中执行if吗?

说我有一张桌子

ticket | row | archived
1      | 1   | true
1      | 2   | true
1      | 3   | true
2      | 1   | false
2      | 2   | true
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以在ticket =的列下面做一个if语句?因此,ticket = 1的地方是真的

true && true && true = true
Run Code Online (Sandbox Code Playgroud)

并且ticket = 2将是假的,因为

false && true = false
Run Code Online (Sandbox Code Playgroud)

或者我应该坚持下去

SELECT ( (SELECT COUNT(*) FROM table WHERE ticket = 1)
       = (SELECT COUNT(*) FROM table WHERE ticket = 1 AND archived = true) )
Run Code Online (Sandbox Code Playgroud)

sql postgresql boolean-logic exists aggregate-functions

14
推荐指数
2
解决办法
1万
查看次数