问题列表 - 第4页

SQL:选择除某些列之外的所有列

有没有办法访问SELECT表中的所有列,除了特定的列?从表中选择所有非 blob 或非几何列会非常方便。

就像是:

SELECT * -the_geom FROM segments;
Run Code Online (Sandbox Code Playgroud)
  • 我曾经听说这个功能被故意排除在SQL 标准之外,因为更改向表中添加列会改变查询结果。这是真的?论证有效吗?
  • 有没有解决方法,尤其是在 PostgreSQL 中?

postgresql sql-standard

140
推荐指数
5
解决办法
14万
查看次数

如何移动 SQL Server 数据库文件?

我有一个数据库,想将.mdf和.ldf文件移动到另一个位置。但是我不想停止MSSQLSERVER服务,也不想导出到另一台服务器。

我怎样才能做到这一点?

sql-server backup sql-server-2012

138
推荐指数
6
解决办法
39万
查看次数

PostgreSQL 多列唯一约束和 NULL 值

我有一张如下表:

create table my_table (
    id   int8 not null,
    id_A int8 not null,
    id_B int8 not null,
    id_C int8 null,
    constraint pk_my_table primary key (id),
    constraint u_constrainte unique (id_A, id_B, id_C)
);
Run Code Online (Sandbox Code Playgroud)

我想(id_A, id_B, id_C)在任何情况下都与众不同。所以下面的两个插入肯定会导致错误:

INSERT INTO my_table VALUES (1, 1, 2, NULL);
INSERT INTO my_table VALUES (2, 1, 2, NULL);
Run Code Online (Sandbox Code Playgroud)

但它没有按预期运行,因为根据文档,两个NULL值不会相互比较,因此两个插入都没有错误地通过。

我怎么能保证我的唯一约束,即使id_C可以NULL在这种情况下?实际上,真正的问题是:我可以在“纯 sql”中保证这种唯一性,还是必须在更高级别(在我的情况下为 java)来实现它?

postgresql null constraint unique-constraint

137
推荐指数
3
解决办法
13万
查看次数

使用 ENUM 与 Integer 类型的优缺点?

假设在某个随机表中,您有一个名为status的列。它的实际值将是enabled或disabled。

此列的数据类型是 int/bool(1 或零)还是ENUM与值为enabledand一起使用更好disabled?有什么优点或缺点?

假设您有 4 个或 10 个甚至更多,而不仅仅是两个有效状态?随着所需值数量的增加,优势和劣势会向一侧倾斜还是向另一侧倾斜?

mysql database-design datatypes

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

Guid vs INT - 作为主键哪个更好?

我一直在阅读使用或不使用Guid和的原因int。

int更小、更快、更容易记住、保持时间顺序。至于Guid,我发现的唯一优点是它是独一无二的。在哪种情况下 aGuid会更好int,为什么?

从我所看到的,int除了数量限制之外没有任何缺陷,这在许多情况下是无关紧要的。

究竟为什么被Guid创造?我实际上认为它除了用作简单表的主键之外还有其他用途。(任何Guid用于某事的实际应用程序的示例?)

SQL Server 上的 ( Guid = UniqueIdentifier ) 类型

performance sql-server primary-key uniqueidentifier

135
推荐指数
6
解决办法
11万
查看次数

级联(ON DELETE/UPDATE)行为的良好解释

我不是每天都设计模式,但是当我这样做时,我会尝试正确设置级联更新/删除以使管理更容易。我了解级联的工作原理,但我永远记不起哪个表是哪个。

例如,如果我有两个表 -Parent并且Child- 在Child该引用上有一个外键Parent并且 has ON DELETE CASCADE,哪些记录触发级联,哪些记录被级联删除?我的第一个猜测是Child记录被删除时Parent记录被删除,因为Child记录依赖于Parent记录,但这ON DELETE是不明确的;这可能意味着在删除Parent记录时删除记录Child,也可能意味着在删除Child记录时删除记录Parent。那么它是哪个?

我希望语法是ON PARENT DELETE, CASCADE,ON FOREIGN DELETE, CASCADE或者类似的东西来消除歧义。有没有人有记住这一点的助记符?

mysql foreign-key

135
推荐指数
4
解决办法
26万
查看次数

为什么我们不应该允许 NULL?

我记得读过这篇关于数据库设计的文章,我还记得它说你应该有 NOT NULL 的字段属性。我不记得为什么会这样。

我似乎只能想到,作为应用程序开发人员,您不必测试 NULL和可能不存在的数据值(例如,字符串的空字符串)。

但是对于日期、日期时间和时间 (SQL Server 2008),您会怎么做?你必须使用一些历史或触底的日期。

对此有何想法?

null database-design

134
推荐指数
7
解决办法
6万
查看次数

优化对一系列时间戳的查询(两列)

我在 Ubuntu 12.04 上使用 PostgreSQL 9.1。

我需要在一个时间范围内选择记录:我的表time_limits有两个timestamp字段和一个integer属性。我的实际表中还有其他列与此查询无关。

create table (
   start_date_time timestamp,
   end_date_time timestamp, 
   id_phi integer, 
   primary key(start_date_time, end_date_time,id_phi);
Run Code Online (Sandbox Code Playgroud)

该表包含大约 200 万条记录。

像下面这样的查询花费了大量的时间:

select * from time_limits as t 
where t.id_phi=0 
and t.start_date_time <= timestamp'2010-08-08 00:00:00'
and t.end_date_time   >= timestamp'2010-08-08 00:05:00';
Run Code Online (Sandbox Code Playgroud)

所以我尝试添加另一个索引 - PK的倒数:

create index idx_inversed on time_limits(id_phi, start_date_time, end_date_time);
Run Code Online (Sandbox Code Playgroud)

我的印象是性能有所提高:访问表中间记录的时间似乎更合理:介于 40 到 90 秒之间。

但是对于时间范围中间的值,它仍然是几十秒。在针对表格末尾时(按时间顺序),还有两次。

我explain analyze第一次尝试得到这个查询计划:

 Bitmap Heap Scan on time_limits  (cost=4730.38..22465.32 rows=62682 width=36) (actual time=44.446..44.446 rows=0 loops=1)
   Recheck …
Run Code Online (Sandbox Code Playgroud)

postgresql index optimization explain postgresql-9.1

129
推荐指数
2
解决办法
13万
查看次数

删除mysql-bin文件是否安全?

我在 mysql 中有 MM 复制,我想在框中挤出一些可用空间以删除不必要的文件,我在mysql-bin里面遇到了这些文件/var/db/mysql/有数百个这样的文件mysql-bin.000123,mysql-bin.000223等等。我已经检查了 mysql 复制show master status,show slave status它们是在某些位置使用一些 mysql-bin 文件,但我猜所有其他 bin 文件都是剩余的,不会再使用了。在这种情况下,删除除复制当前指向的文件之外的所有 mysql-bin 文件是否安全?

如果删除是安全的,那么我可以做些什么来在不使用这些文件时自动删除它们?

mysql replication mysql-5 binlog

124
推荐指数
4
解决办法
17万
查看次数

PostgreSQL 中 LIKE、SIMILAR TO 或正则表达式的模式匹配

我必须编写一个简单的查询,在其中查找以 B 或 D 开头的人名:

SELECT s.name 
FROM spelers s 
WHERE s.name LIKE 'B%' OR s.name LIKE 'D%'
ORDER BY 1
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法重写它以提高性能。所以我可以避免or和/或like?

postgresql index regular-expression pattern-matching string-searching

123
推荐指数
3
解决办法
18万
查看次数