我有 4 个这样相关的表(这是一个例子):
Company:
ID
Name
CNPJ
Department:
ID
Name
Code
ID_Company
Classification:
ID
Name
Code
ID_Company
Workers:
Id
Name
Code
ID_Classification
ID_Department
Run Code Online (Sandbox Code Playgroud)
假设我有一个classification
with id = 20, id_company = 1
。并且department
有id_company = 2
(代表另一家公司)。
这将允许创建来自两个公司的工人,因为分类和部门分别链接到公司。我不希望这种情况发生,所以我认为我的人际关系有问题,我不知道如何解决。
增加 default_statistics_target 值可以使您的数据库更快,特别是在分析之后....
阅读这篇文章我看到https://discuss.pivotal.io/hc/en-us/articles/201581033-default-statistics-target-Explained
(...) 简而言之,这个参数控制着统计数据的收集方式,值 1 是估计最少/准确的统计数据,值 1000 是最准确的统计数据,显然会消耗时间/资源(CPU、内存等)/空间。通常默认值足以获得准确的计划,但如果您有复杂的数据分布/或查询中经常引用一列,则设置更高的值可能有助于获得更好的表统计信息,因此优化器执行的更好计划。
这是一个很好的解释,但例如,如果我设置 default_statistics_target= 1000 1000 真正意味着什么?正在生成 1000 KB 的统计数据?或者它可能是分析的表的 1000 行?也许是 1000 列?或者每次分析可能需要 1000 秒...
所以我的问题是这个数字是如何真正影响分析或查询规划器的?很明显,我知道 default_statistics_target = 1000 将获得比 100 更多的时间,用于运行分析,并且 1000 将生成更好的统计数据......
这是什么错误?我看到复制工作正常,但我不确定数据是否已损坏。
我可以安全地忽略此错误吗?
有什么区别:
vacuum;
Run Code Online (Sandbox Code Playgroud)
和
vacuum analyze;
Run Code Online (Sandbox Code Playgroud)
我阅读了postgresql
手册,但这对我来说仍然不是 100% 清楚。
我需要同时运行两者,还是其中一个就足够了?
我知道CREATE INDEX CONCURRENTLY
比较慢,但是与传统相比需要多长时间才能完成CREATE INDEX
?40%以上还是更多?
我正在一个包含 10000 个寄存器的表和一个包含 15 个字符的列中创建索引。使用传统方式需要 10 分钟CREATE INDEX
。
我知道这个问题很难回答,但是有办法估算吗?