我正在建立一个新的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) 给定特定语言的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]此属性指定元素的属性值和文本内容的基本语言.此属性的默认值未知.