我不知道如何更新 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) 是的,我知道数据规范化应该是我的首要任务(因为它是)。
used_vehicle,color,doors,mileage,price等等,总共65。Vehicle表,VehicleInterior, VehicleExterior, VehicleTechnical, VehicleExtra(与主Vehicle表一一对应)。假设我将有大约 500 万行(车辆)。
在SELECT一个WHERE条款:请问性能会更好,通过搜索(至少索引的这两种情况下IDs):
Vehicle 具有 65 列的表或Vehicle表与JOINS其他四个表(均具有 500 万行)以返回与Vehicle?(根据数据库引擎,考虑 PostgreSQL 和/或 MySQL)。
真的很感激您从以前的经验中可能获得的任何详细见解吗?
如果有的话,更新将很少见,并且选择将主要针对搜索结果列表的所有列(车辆详细信息页面)和主要信息(几列),实际上也许最好的解决方案是两个表:一个包含主要信息(很少列)和另一个表以及其余的列。
postgresql database-design partitioning postgresql-performance
当使用系统版本控制的时态表(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
关于locks rec but not gap waitingTRANSACTION(1)中的含义,哪个是正确的?
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) 我做了一些研究,发现我应该将路线存储为一系列停靠点。就像是:
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) 我需要为 SSRS 和 Tableau 报告提供实时或几乎实时的数据。我不希望生产 OLTP 系统受到长时间运行的查询的负面影响。在可用性组中的辅助数据库上运行大型查询会影响主数据库中的事务性能吗?
前段时间我创建了一个名为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)
但是,似乎有一个对象在 …
存储大小
小于 3 的精度为 6 个
字节。精度 3 和 4 为 7 个
字节。所有其他精度需要 8 个字节。
datetime2(0)、datetime2(1)、的大小datetime2(2)使用相同的存储量(6 字节)。
我是否正确地说,我可能会datetime2(2)在没有任何额外尺寸成本的情况下使用并获得精度的好处?
请注意:
datetime2(0)在 where 子句中使用或通过索引查找时,cpu 效率会更高吗?
这是一个庞大的表,因此最小的优化将产生很大的不同。
有没有办法如何将基数估计“注入”到 SQL Server 优化器(任何版本)?
即类似于 Oracle 的基数提示。
我的动机是由这篇文章驱动的,查询优化器真的有多好?[1],他们测试基数估计量对选择一个糟糕计划的影响。因此,如果我可以强制 SQL Server 精确地“估计”复杂查询的基数就足够了。
[1]莱斯、维克多等人。“查询优化器有多好,真的吗?”
VLDB 基金会会议录 9.3 (2015):204-215。
我现在负责 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 ×5
postgresql ×3
optimization ×2
datetime2 ×1
deadlock ×1
json ×1
mysql ×1
partitioning ×1
permissions ×1
ssrs ×1
update ×1