小编Nic*_*art的帖子

选择正确的分区规则

我正在建立一个新的PostgreSQL 9数据库,它将包含数百万(或数十亿)行.所以我决定使用PostgreSQL继承来分区数据.

我创建了一个这样的主表(例如简化):

CREATE TABLE mytable
(
  user_id integer,
  year integer,
  CONSTRAINT pk_mytable PRIMARY KEY (user_id, year)
);
Run Code Online (Sandbox Code Playgroud)

和10个分区表:

CREATE TABLE mytable_0 () INHERITS (mytable);
CREATE TABLE mytable_1 () INHERITS (mytable);
...
CREATE TABLE mytable_9 () INHERITS (mytable);
Run Code Online (Sandbox Code Playgroud)

我知道将始终使用唯一的user_id条件从应用程序访问行.所以我想使用基于user_id的规则在10个表中"相当"地传播数据.

要调整主表上的查询,我的第一个想法是使用模数检查约束:

ALTER TABLE mytable_0 ADD CONSTRAINT mytable_user_id_check CHECK (user_id % 10 = 0);
ALTER TABLE mytable_1 ADD CONSTRAINT mytable_user_id_check CHECK (user_id % 10 = 1);
...
Run Code Online (Sandbox Code Playgroud)

问题是,当我使用user_id上的条件查询主表"mytable"时,PostgreSQL分析器检查所有表并且不受益于检查约束:

EXPLAIN SELECT * FROM mytable WHERE user_id = 12345;

"Result  (cost=0.00..152.69 rows=64 width=36)"
" …
Run Code Online (Sandbox Code Playgroud)

postgresql database-partitioning

5
推荐指数
1
解决办法
2742
查看次数

lang = unknown属性有效吗?

给定特定语言的HTML文档(英语).

我在标签上定义了一个lang属性:

<html lang="en">
Run Code Online (Sandbox Code Playgroud)

页面中的某些文本是用其他语言编写的(例如法语):

<span lang="fr">
  blabla...
</span>
Run Code Online (Sandbox Code Playgroud)

但是,如果我无法识别语言,但我知道它不是英语,我可以将"unknown"设置为lang属性的有效值吗?

<span lang="unknown">
  blabla...
</span>
Run Code Online (Sandbox Code Playgroud)

我在w3c文档中读到了这个,但我不确定"默认值是[...]未知"意味着"未知"是真正的价值......

http://www.w3.org/TR/html4/struct/dirlang.html

lang = language-code [CI]此属性指定元素的属性值和文本内容的基本语言.此属性的默认值未知.

html lang

5
推荐指数
1
解决办法
766
查看次数

标签 统计

database-partitioning ×1

html ×1

lang ×1

postgresql ×1