小编Pau*_*ite的帖子

更新 json 数据类型中的 json 元素

我不知道如何更新 PostgreSQL 9.3 数据类型中的元素。

我的例子:

CREATE TABLE "user"
(
  id uuid NOT NULL,
  password character varying(255),
  profiles json,
  gender integer NOT NULL DEFAULT 0,
  created timestamp with time zone,
  connected timestamp with time zone,
  modified timestamp with time zone,
  active integer NOT NULL DEFAULT 1,
  settings json,
  seo character varying(255) NOT NULL,
  CONSTRAINT id_1 PRIMARY KEY (id)
)
WITH (
  OIDS=TRUE
);
ALTER TABLE "user"
  OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)

“配置文件”中的 json 部分

CREATE TABLE "user"
(
  id uuid NOT NULL,
  password …
Run Code Online (Sandbox Code Playgroud)

postgresql update postgresql-9.3 json

17
推荐指数
3
解决办法
6万
查看次数

许多列 vs 少数表 - 性能明智

是的,我知道数据规范化应该是我的首要任务(因为它是)。

  1. 我有一个表,65列存储与列车辆数据:used_vehiclecolordoorsmileageprice等等,总共65。
  2. 现在,我可以将它分开并有一个Vehicle表,VehicleInterior, VehicleExterior, VehicleTechnical, VehicleExtra(与主Vehicle表一一对应)。

假设我将有大约 500 万行(车辆)。

SELECT一个WHERE条款:请问性能会更好,通过搜索(至少索引的这两种情况下IDs):

  1. Vehicle 具有 65 列的表或
  2. Vehicle表与JOINS其他四个表(均具有 500 万行)以返回与Vehicle?

(根据数据库引擎,考虑 PostgreSQL 和/或 MySQL)。

真的很感激您从以前的经验中可能获得的任何详细见解吗?

如果有的话,更新将很少见,并且选择将主要针对搜索结果列表的所有列(车辆详细信息页面)和主要信息(几列),实际上也许最好的解决方案是两个表:一个包含主要信息(很少列)和另一个表以及其余的列。

postgresql database-design partitioning postgresql-performance

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

使用 SQL Server 2016 system-versioned temporal table for Slowly-Changed Dimensions 的查询策略

当使用系统版本控制的时态表(SQL Server 2016 中的新功能)时,当使用此功能处理大型关系数据仓库中的缓慢变化维度时,查询创作和性能影响是什么?

例如,假设我有一个Customer带有Postal Code列的 100,000 行维度和一个Sales带有CustomerID外键列的数十亿行事实表。并假设我想查询“按客户邮政编码划分的 2014 年总销售额”。简化的 DDL 是这样的(为了清楚起见省略了很多列):

CREATE TABLE Customer
(
    CustomerID int identity (1,1) NOT NULL PRIMARY KEY CLUSTERED, 
    PostalCode varchar(50) NOT NULL,
    SysStartTime datetime2 GENERATED ALWAYS AS ROW START NOT NULL, 
    SysEndTime datetime2 GENERATED ALWAYS AS ROW END NOT NULL,   
    PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime) 
)
WITH (SYSTEM_VERSIONING = ON);

CREATE TABLE Sale
(
    SaleId int identity(1,1) NOT NULL PRIMARY KEY CLUSTERED,
    SaleDateTime …
Run Code Online (Sandbox Code Playgroud)

data-warehouse sql-server slowly-changing-dimension temporal-tables sql-server-2016

17
推荐指数
1
解决办法
1214
查看次数

死锁报告中“锁定记录但不是间隙等待”的含义

  1. 关于locks rec but not gap waitingTRANSACTION(1)中的含义,哪个是正确的?

    • 已经授予间隙锁,等待聚集索引X锁?
    • 已经授予聚集索引 X 锁,等待间隙锁?
  2. Transaction(1) 中有 31 行。这些行的含义是什么?这是否代表间隙锁定?

     0: len 4; hex 800c20d6; asc     ;;
     ....
     29: SQL NULL;
     30: SQL NULL;
    
    Run Code Online (Sandbox Code Playgroud)

最新检测到的死锁报告

    LATEST DETECTED DEADLOCK
    ------------------------
    2015-09-25 15:27:24 1b8084000


    *** (1) TRANSACTION:
    TRANSACTION 5226928, ACTIVE 0 sec fetching rows
    mysql tables in use 1, locked 1
    LOCK WAIT 31 lock struct(s), heap size 6544, 548 row lock(s)
    MySQL thread id 71, OS thread handle 0x1b45be000, query id 4085356 localhost root Creating …
Run Code Online (Sandbox Code Playgroud)

mysql deadlock

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

将公交路线存储在数据库中

我做了一些研究,发现我应该将路线存储为一系列停靠点。就像是:

Start -> Stop A -> Stop B -> Stop C -> End
Run Code Online (Sandbox Code Playgroud)

我创建了三个表:

  • 路线
  • 停止
  • 路线停靠点

...其中RouteStops是一个连接表。

我有类似的东西:

路线

+---------+
| routeId |
+---------+
|    1    |
+---------+
|    2    |
+---------+
Run Code Online (Sandbox Code Playgroud)

车站

+-----------+------+
| stationId | Name |
+-----------+------+
|     1     |   A  |
+-----------+------+
|     2     |   B  |
+-----------+------+
|     3     |   C  |
+-----------+------+
|     4     |   D  |
+-----------+------+
Run Code Online (Sandbox Code Playgroud)

路线站

+-------------+---------------+
| routeId(fk) | stationId(fk) |
+-------------+---------------+
|     1       |       A       | …
Run Code Online (Sandbox Code Playgroud)

database-design

17
推荐指数
1
解决办法
7673
查看次数

在可用性组中的辅助数据库上运行大型查询会影响主数据库中的事务性能吗?

我需要为 SSRS 和 Tableau 报告提供实时或几乎实时的数据。我不希望生产 OLTP 系统受到长时间运行的查询的负面影响。在可用性组中的辅助数据库上运行大型查询会影响主数据库中的事务性能吗?

sql-server ssrs availability-groups sql-server-2014

17
推荐指数
1
解决办法
3178
查看次数

查找链接到 PostgreSQL 角色的对象

前段时间我创建了一个名为user1(PostgreSQL 9.4.9)的 PostgreSQL 用户。

我想放弃这个用户。所以我首先撤销对表、序列、函数、默认权限和所有权的所有权限:

ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON SEQUENCES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM user1;

REVOKE ALL ON ALL SEQUENCES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL TABLES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL FUNCTIONS IN SCHEMA public FROM user1;

REASSIGN OWNED BY user1 TO postgres;
Run Code Online (Sandbox Code Playgroud)

但是,似乎有一个对象在 …

postgresql permissions

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

datetime2(0) 与 datetime2(2)

根据文档datetime2 (Transact-SQL)

存储大小
小于 3 的精度为 6 个
字节。精度 3 和 4 为 7 个
字节。所有其他精度需要 8 个字节。

datetime2(0)datetime2(1)、的大小datetime2(2)使用相同的存储量(6 字节)。

我是否正确地说,我可能会datetime2(2)在没有任何额外尺寸成本的情况下使用并获得精度的好处?

请注意:

  • 该列用PK进行索引,形成复合聚集索引(用于表分区)
  • 我不在乎毫秒

datetime2(0)在 where 子句中使用或通过索引查找时,cpu 效率会更高吗?

这是一个庞大的表,因此最小的优化将产生很大的不同。

sql-server datetime2 sql-server-2016

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

SQL Server 基数提示

有没有办法如何将基数估计“注入”到 SQL Server 优化器(任何版本)?

即类似于 Oracle 的基数提示。

我的动机是由这篇文章驱动的,查询优化器真的有多好?[1],他们测试基数估计量对选择一个糟糕计划的影响。因此,如果我可以强制 SQL Server 精确地“估计”复杂查询的基数就足够了。


[1]莱斯、维克多等人。“查询优化器有多好,真的吗?”
VLDB 基金会会议录 9.3 (2015):204-215。

sql-server optimization

17
推荐指数
2
解决办法
3498
查看次数

同事说永远不要在 SQL 中使用 OR 语句,这是真的吗?

我现在负责 SQL 开发的同事说我永远不应该使用OR语句,因为它会弄乱查询优化器并忽略产生慢查询的表索引。我在谷歌搜索时找不到任何这样的例子。以下查询的替代方案变得非常难看,其中有十几个代码块看起来几乎相同(对于示例)使用 if else 语句为每个变量状态。请注意检查为短路的变量,如果值为 2,则返回所有结果,否则按字段过滤。

我询问了一些包含这些关于为什么不使用OR语句的声明的资源,并收到了以下链接(我们使用的是 MS SQL Server)。

这些示例似乎都不像当前的实现,如下所示。我发现很难相信这段代码有问题,但如果有问题,请告诉我。我还想了解更多信息,其中关于不使用的评论OR实际上可能适用以及为什么如此,以便更好地理解该问题。

SELECT
    e.EmployeeName,
    e.DepartmentName,
    crs.Title,
    c.Name as CompanyName
FROM Employee E
Left Outer Join Company c ON c.Id = @companyId
    INNER JOIN Department d on e.DepartmentId = d.Id 
WHERE   
    c.Id = @companyId           
    AND (@Active = 2 OR  crs.IsActive = @Active)
    AND (@Dot = 2 OR IsDot = @Dot)
    AND crs.CompanyId = @companyId
    AND d.CompanyId = @companyId
ORDER BY EmployeeName, Title, …
Run Code Online (Sandbox Code Playgroud)

sql-server optimization query-performance

17
推荐指数
2
解决办法
2648
查看次数