表变量和一时半刻表,表分区和表存储属性

--表变量
update invent set goodInfo=null
declare @tmp_goods table(
    gno char(5)
)
insert into @tmp_goods select gno from invent group by gno

declare @gno char(6),@stno char(6),@gname varchar(255),@producer varchar(255)
while exists(select gno from @tmp_goods)
    begin
        set rowcount 1
        select @gno=gno from @tmp_goods
        select @gname=gname,@producer=producer from goods where gno=@gno;
        set rowcount 0
        update invent set goodInfo=@gname+'-'+@producer where gno=@gno

        delete from @tmp_goods where gno=@gno
    end

select * from invent

 

那一章节里继续研商表的剧情,毕竟前边再高深的源委都以手无寸铁在管理表数据的基础之上的。

  • ###### 表变量:

 

些微特征是不带属性的(如上边包车型客车电话号码、过期日期、交货落成标志)——称轻便特征,那种特征是不带主数据的,即未有品质P表(但依然有S表,用来存款和储蓄SID的底表,加快查询速度);有些是带文本的(如上面包车型大巴性别标志有文件),会有照看的T表文本表;再如下边包车型客车Product即带属性、又带文本、还带等级次序关系,只假设带属性的特点,在底层就能有一张P表与之对应(文本、档次也是有对应的底表的):

表继承

表承袭其实是属于表创造连锁的内容,不过1旦那一个剧情都放在表创立那有些,就体现存个别太长了,看的抑郁,就在这里单独来说话。表承接,从字面意思上来看,就是从其余职位延续部分事物过来,实际行使上也是这么,表承继正是以其它表为模板来生成新的表。基本命令格式如下:
create table table_child (like table_father);
小编们来看贰个演示:

postgres=# \d testdb1; 
                        Table "public.testdb1"
  Column   |         Type          |             Modifiers             
-----------+-----------------------+-----------------------------------
 id        | integer               | not null
 comments  | character varying(20) | default 'test'::character varying
 parent_id | integer               | 
Indexes:
    "testdb1_pkey" PRIMARY KEY, btree (id)

postgres=# select * from testdb1; 
 id | comments | parent_id 
----+----------+-----------
  1 | my test  |         5
(1 row)

地点是一张表的构造以及表中的数额,我们以那张表为模板生成一张新表testdb二:

postgres=# create table testdb2 (like testdb1); 
CREATE TABLE
postgres=# \d testdb2; 
            Table "public.testdb2"
  Column   |         Type          | Modifiers 
-----------+-----------------------+-----------
 id        | integer               | not null
 comments  | character varying(20) | 
 parent_id | integer               | 

postgres=# select * from testdb2; 
 id | comments | parent_id 
----+----------+-----------
(0 rows)

从上面的代码中我们能够看出,生成的表testdb二和testdb壹的构造大同小异,但是暗许景况下没有承继表testdb第11中学的数据以及comments字段的私下认可值。通过询问官网文书档案开采,要是想继续原表的各样性能以及数额,须求用到including和with关键字,用法分别是:

  • including defaults 承接默许值
  • including constraint 承接约束
  • including indexes 传承索引
  • including storage 传承存款和储蓄
  • including comments 承袭注释
  • including all 承继原表的具备属性
  • create table table_child as select * from table_father [with no
    data];

咱俩来尝试一下,分别来生成3个承继暗许值和二个无冕原表全体属性的新表。

postgres=# create table testdb3 (like testdb1 including defaults); 
CREATE TABLE
postgres=# \d testdb3 
                        Table "public.testdb3"
  Column   |         Type          |             Modifiers             
-----------+-----------------------+-----------------------------------
 id        | integer               | not null
 comments  | character varying(20) | default 'test'::character varying
 parent_id | integer               | 

postgres=# select * from testdb3; 
 id | comments | parent_id 
----+----------+-----------
(0 rows)

从地方能够看来承袭了私下认可值,未有承接表中数据以及主键索引

postgres=# create table testdb4 (like testdb1 including all); 
CREATE TABLE
postgres=# \d testdb4;
                        Table "public.testdb4"
  Column   |         Type          |             Modifiers             
-----------+-----------------------+-----------------------------------
 id        | integer               | not null
 comments  | character varying(20) | default 'test'::character varying
 parent_id | integer               | 
Indexes:
    "testdb4_pkey" PRIMARY KEY, btree (id)

postgres=# select * from testdb4;
 id | comments | parent_id 
----+----------+-----------
(0 rows)

从下面能够见到,including
all关键字会承袭全数属性,不过不会继续原表的数码。

postgres=# create table testdb5 as select * from testdb1;
SELECT 1
postgres=# \d testdb5; 
            Table "public.testdb5"
  Column   |         Type          | Modifiers 
-----------+-----------------------+-----------
 id        | integer               | 
 comments  | character varying(20) | 
 parent_id | integer               | 

postgres=# select * from testdb5; 
 id | comments | parent_id 
----+----------+-----------
  1 | my test  |         5
(1 row)

以此示例使用as关键字创制新表testdb5,不带with子句。从中能够看到默许景况下,as语句会将本来表里的数额复制到新表中,不过不会复制原来表中的质量,例如各样索引、约束等。那能或不能够透过把这二种命令格局组合起来,既能够三番五次原表结构,又能够复制原表数据吧?目前依然不曾这种命令的,只可以通过一体化的复制数据,再增添索引、约束等,只怕先复制完整的表结构,再导入数据。

DECLARE @tb table(id int identity(1,1), name varchar(100))
INSERT @tb
SELECT id, name FROM mytable WHERE name like ‘zhang%’

--临时表  放在dbtemp数据库中
if OBJECT_ID('tempdb.dbo.#tmp_inv','U') is not null
drop table #tmp_invent

方法1:
create table #tmp_inv(id int)
--方法2
select * into #tmp_inv from invent

997755.com澳门葡京 1

临时表

PostgreSQL扶助三种等级次序的一时表,分别是会话等第临时表和业务等级权且表。同时,表中的多少也分为三个等级,2个是会话等级,2个是专门的学业品级。因而就存在三种格局的一时半刻表。分别是:

  • 会话等第表、会话等级数据
  • 会话等级表、事务等第数据
  • 作业等级表、事务等级数据

首先种表和数目在对话周期都存在,会话销毁,表和数码销毁。第一种表在对话周期存在,数据在业务周期存在,事务周期甘休数据销毁,会话截止表销毁。第两种表和数量在职业停止现在都会销毁。

一时半刻表的始建
暂时表的开创和普通表的开创唯一的分别正是在创设语句中加了叁个temporary关键字(也能够简写为temp),基本命令格式如下:
create temporary table table_name (field1 type1, field2 type...);
也能够选拔我们地方表承继的语法来成立临时表:
create temp table table_name(like table1);

create temp table table_name as select * from table1;
依据前面说的,目前表是分成两种等级次序的,而利用地方的讲话,默许景况下创办的是会话品级的表和数据。而1旦想创立其余级其他表,则供给采用上面多少个子句:

  • on commit perserve rows997755.com澳门葡京
    这一个子句和暗中认可情况壹致,创立会话级其余表和数据,插入的数额保存到。
  • on commit delete rows
    那么些子句用来创设会话品级表和业务等第数据,事务销毁后表中数据销毁。
  • on commit drop
    这一个子句只可以用在工作中开创目前表,在对话中创设只会显得表格成立的升迁新闻,不过看不到表格,因为表格一开立成功就当下销毁了。

经过上面多少个示范来看一下:

postgres=# create temp table temp_1 as select * from testdb1; 
SELECT 1
postgres=# \d 
           List of relations
  Schema   |  Name   | Type  |  Owner   
-----------+---------+-------+----------
 pg_temp_2 | temp_1  | table | postgres
 public    | testdb1 | table | postgres
 public    | testdb2 | table | postgres
(3 rows)
postgres=# create temp table temp_2 as select id, parent_id from testdb1; 
SELECT 1
postgres=# \d temp_2;
    Table "pg_temp_2.temp_2"
  Column   |  Type   | Modifiers 
-----------+---------+-----------
 id        | integer | 
 parent_id | integer | 

postgres=# create temp table temp_3 (like testdb1); 
CREATE TABLE
postgres=# \d temp_3; 
           Table "pg_temp_2.temp_3"
  Column   |         Type          | Modifiers 
-----------+-----------------------+-----------
 id        | integer               | not null
 comments  | character varying(20) | 
 parent_id | integer               |

postgres=# \d
           List of relations
  Schema   |  Name   | Type  |  Owner   
-----------+---------+-------+----------
 pg_temp_2 | temp_1  | table | postgres
 pg_temp_2 | temp_2  | table | postgres
 pg_temp_2 | temp_3  | table | postgres
 public    | testdb1 | table | postgres
 public    | testdb2 | table | postgres
(5 rows)

从地点能够见见,3张一时半刻表都以居于二个特殊的情势下,情势名称是pg_temp_2。而在postgresql中,各个会话中开创的目前表都是居于相当的形式下,形式名称一般都以pg_表变量和一时半刻表,表分区和表存储属性。temp_x,x是依据分化的对话来分配的数字。大家来尝试创设一下其余级其他表:

  1. 成立会话等第权且表和事情等级数据。

postgres=# create temp table temp_4 (like temp_1 including all) on commit delete rows; 
CREATE TABLE

postgres=# select * from temp_4; 
 id | comments | parent_id 
----+----------+-----------
(0 rows)

postgres=# insert into temp_4 values(1, 'test4', 4); 
INSERT 0 1
postgres=# select * from temp_4; 
 id | comments | parent_id 
----+----------+-----------
(0 rows)

postgres=# begin;
BEGIN
postgres=# insert into temp_4 values(1, 'test4', 4);
INSERT 0 1
postgres=# select * from temp_4; 
 id | comments | parent_id 
----+----------+-----------
  1 | test4    |         4
(1 row)

postgres=# end; 
COMMIT
postgres=# select * from temp_4; 
 id | comments | parent_id 
----+----------+-----------
(0 rows)

上边的以身作则中,大家操作依次是:
(一) 创立目前表temp_四,表是会话等级,数据是职业等级
(2)查看temp_四表,未有任何数据
(三)插入一条数据,再看表,依旧尚未数据
(四)begin启动二个业务,往表中插入数据,查看表,发掘有一条数据
(五)end截止工作,再查看表,表中数量流失。
示范清楚地解说了那种一时半刻表的特征

  1. 政工一时表和事情数据

postgres=# create temp table temp_5 (like temp_1 including all) on commit drop; 
CREATE TABLE
postgres=# \d 
           List of relations
  Schema   |  Name   | Type  |  Owner   
-----------+---------+-------+----------
 pg_temp_2 | temp_1  | table | postgres
 pg_temp_2 | temp_2  | table | postgres
 pg_temp_2 | temp_3  | table | postgres
 pg_temp_2 | temp_4  | table | postgres
 public    | testdb1 | table | postgres
 public    | testdb2 | table | postgres
(6 rows)

地点代码中咱们创立了1个事情等第表,提醒创制成功,但是看不到这一个一时半刻表。表明事情等第表在对话中无奈存在,恐怕说创制之后就销毁。大家在业务中再来看:

postgres=# begin; 
BEGIN
postgres=# create temp table temp_5 (like temp_1 including all) on commit drop; 
CREATE TABLE
postgres=# \d 
           List of relations
  Schema   |  Name   | Type  |  Owner   
-----------+---------+-------+----------
 pg_temp_2 | temp_1  | table | postgres
 pg_temp_2 | temp_2  | table | postgres
 pg_temp_2 | temp_3  | table | postgres
 pg_temp_2 | temp_4  | table | postgres
 pg_temp_2 | temp_5  | table | postgres
 public    | testdb1 | table | postgres
 public    | testdb2 | table | postgres
(7 rows)

postgres=# select * from temp_5; 
 id | comments | parent_id 
----+----------+-----------
(0 rows)

postgres=# insert into temp_5 values(1, 'test5', 5); 
INSERT 0 1
postgres=# select * from temp_5; 
 id | comments | parent_id 
----+----------+-----------
  1 | test5    |         5
(1 row)

postgres=# end; 
COMMIT
postgres=# \d
           List of relations
  Schema   |  Name   | Type  |  Owner   
-----------+---------+-------+----------
 pg_temp_2 | temp_1  | table | postgres
 pg_temp_2 | temp_2  | table | postgres
 pg_temp_2 | temp_3  | table | postgres
 pg_temp_2 | temp_4  | table | postgres
 public    | testdb1 | table | postgres
 public    | testdb2 | table | postgres
(6 rows)

下边的代码是多个完整的思想政治工作,代码功效依次是:
(壹)在作业中先创建一时表temp_5,查看表,确实存在。
(二)查看表中未有任何数据,往表中插入一条数据,再看表,有一条数据
(三)退出职业,再看表消息,temp_5以此权且表已经一去不归了。
深信经过那多少个例子,我们对一时表的特色已经怀有领悟了。

  • ###### 临时表:

    SELECT name, address
    INTO #ta FROM mytable
    WHERE name like ‘zhang%’
    (if exists (select * from tempdb.dbo.sysobjects where id =
    object_id(N’tempdb..#ta’) and type=’U’)drop table #ta)

  • ###### 比较:

 

带属性、文本、档案的次序的性状:

表分区

表分区是因此某种标上校贰个大表划分成若干个小表,然后创制触发器,在插入数据的时候,触发器依据内定的正统,将数据插入到差别的小表中去。能够拉长质量,以及询问速度。规范能够是日期、时间、地区等等。
表分区的贯彻依赖于表承继,这里的表继承和地点所说的表承接略有分别,上面包车型大巴表继承是通过复制父表的结构生成子表,而那边的表继承,指的是一心承接父表的表结构,同时还能增加本人的字段来生成一张新的子表。如下所示:

postgres=# create table father(name text, age int); 
CREATE TABLE
postgres=# create table child(language text) inherits (father); 
CREATE TABLE
postgres=# \d father;
    Table "public.father"
 Column |  Type   | Modifiers 
--------+---------+-----------
 name   | text    | 
 age    | integer | 
Number of child tables: 1 (Use \d+ to list them.)

postgres=# \d child; 
      Table "public.child"
  Column  |  Type   | Modifiers 
----------+---------+-----------
 name     | text    | 
 age      | integer | 
 language | text    | 
Inherits: father

在上头的演示种,子表child承继父表father,同时增加了自个儿字段language。

还要这种表承袭还具有不一致的特征,那系列型的表承继中,查询父表,能够查询到全部子表中对应字段的源委。我们透过多少个例子来看一下那种表承袭的特色:

postgres=# select * from father; 
 name | age 
------+-----
(0 rows)

postgres=# slect * from child 
postgres-# ; 
ERROR:  syntax error at or near "slect"
LINE 1: slect * from child 
        ^
postgres=# select * from child; 
 name | age | language 
------+-----+----------
(0 rows)

postgres=# insert into child values('张三', 16, '中文'); 
INSERT 0 1
postgres=# insert into child values('tom', 19, 'English');
INSERT 0 1
postgres=# select * from father; 
 name | age 
------+-----
 张三 |  16
 tom  |  19
(2 rows)

postgres=# select * from child; 
 name | age | language 
------+-----+----------
 张三 |  16 | 中文
 tom  |  19 | English
(2 rows)

从上边的例子中得以观望,往子表中插入的数量,在父表中能够见到相应字段的数目。再看下边那一个例子:

postgres=# insert into father values('李四', 25);
INSERT 0 1
postgres=# select * from father; 
 name | age 
------+-----
 李四 |  25
 张三 |  16
 tom  |  19
(3 rows)

postgres=# select * from child; 
 name | age | language 
------+-----+----------
 张三 |  16 | 中文
 tom  |  19 | English
(2 rows)

能够看看,往父表中插入的多寡,在子表中却看不到。

而那体系型的表承接的表征恰恰是表分区达成的底蕴,能够通过查询主表来查询主表下全数分区表的内容。往分区表里插入数据,相当于是往主表中插入数据。在此地,主表也正是是子表,分区表约等于是父表。同时,还要通过触发器来促成往主表里插入数据或询问数据时,自动转到对应的分区表上。由此还要明白触发器的创导规则。由此这一部分剧情在学完触发器的文化后再来看。

一.表变量存在内部存款和储蓄器,一时半刻表在硬盘,表不是尤其大的时候放在内部存款和储蓄器速度快。
二.建议:触发器、自定义函数用表变量;存储进度看处境,大多数用表变量;特殊的行使,大数据量的场子用临时表。
三.表变量不必删除,也就不会有命名抵触,暂时表尤其是全局目前表用的时候必须化解命名争执.
四.壹旦运用到了权且表,在蕴藏进度的末段务必将持有的暂时表显式删除,先truncate
table,然后drop table,那样能够制止系统表的较长期锁定。
⑤.表变量的欠缺:
—表变量上不可能创造非集中索引(为 P揽胜IMA奇骏Y 或 UNIQUE
约束创立的类别索引除外)
—在先河 DECLARE 语句后不能够改换表定义
—表变量不能够在 INSERT EXEC 或 SELECT INTO 语句中运用
—表变量不帮忙truncate,所以完全清空对象结果集时目前表有显明优势,而表变量只好delete

997755.com澳门葡京 2

表的仓库储存属性

表的存款和储蓄属性指的是
TOAST用于存款和储蓄大字段的本领,在领略这一个技艺在此之前,先明白一下页的概念。页在PostgreSQL中是数额在文书存款和储蓄中的单位,其尺寸是定点的且只辛亏编译时钦命,之后不可能修改,私下认可的大大小小为八KB 。同时,PG 差异意一行数据跨页存款和储蓄,那么对于超长的行数据,PG 就能运转TOAST
,具体正是行使压缩和切块的不二等秘书籍。假使启用了切成片,实际上行数据存款和储蓄在另一张系统表的多个行中,那张表就叫
TOAST 表,这种存款和储蓄格局叫行外部存款和储蓄器储。
而一般景色下,唯有变长类型才会支撑TOAST本领,在变长类型中,前6个字节是长度字。长度字的前三个人是标识位,后三二十人是长度值。长度值包涵作者占用的陆个字节,因而,TOAST数据类型的长度最大应该是30b,及一GB(二^30-一)个字节。
前2位标识位,第3个代表是不是压缩,第三个象征是不是是行外部存款和储蓄器储。五个都是0意味着不降价扣,不是行外部存款和储蓄器储。第三个为一意味压缩过,使用从前必须解压。第三个为1象征行外部存款和储蓄器储,此时,长度字背后存款和储蓄的只是叁个指针。不管多少是还是不是收缩,长度位后30bit都意味的是数额的真正大小,而不会是削减以往的深浅。
假诺一张表A有对应的toast表,那么在系统表pg_class里面就能够有三个表名A对应2个toast表的OID,然后依据这几个oid就能够找到相应的toast表pg_toast_oid。假若么某些大字段的数量存放在toast表中,那么这一个字段的数目就能被切开成页面大小四分一尺寸的块。然后将那些数据块存放在toast表中。各类toast表有chunk_id、chunk_seq和chunk_data字段,数据块就放在chunk_data字段中。在chunk_id和chunk_seq上有二个唯一的目录,用于对数码的便捷找寻。由此在前方变长类型的字段的长短位中,假使存款和储蓄的是指针的话,那么该指针就隐含toast表的OID和特定数值的chunk_id,以及数据的骨子里尺寸。

在 PG 中各样表字段有八种 TOAST 的政策:

  • PLAIN :幸免压缩和行外部存款和储蓄器储。唯有那么些没有必要 TOAST
    计谋就会存放的数据类型允许选拔(比如 int 类型),而对此 text
    那类供给存款和储蓄长度抢先页大小的档期的顺序,是不相同意使用此政策的。
  • EXTENDED
    :允许降价扣和行外部存储器储。一般会先削减,借使依然太大,就能够行外部存款和储蓄器储
  • EXTEHummerH贰NA
    :允许行外部存款和储蓄器储,但决无法压缩。类似字符串那种会对数码的一局地开始展览操作的字段,选拔此政策可能赢得越来越高的品质,因为不须求读收取整行数据再解压。
  • MAIN
    :允许巨惠扣,但决不可能行外存款和储蓄。不超过实际在,为了保障过大数据的囤积,行外部存款和储蓄器储在其他措施(举个例子压缩)都无法知足急需的情况下,作为最后手腕依然会被运营。由此精晓为:尽量不应用行外存款和储蓄更适于。

在PG中,会为每一种允许TOAST的字段设置八个暗中认可的安插。不过能够运用ALTER TABLE SET STORAGE一声令下来修改系统安装的暗中同意计策。

私下认可情状下,唯有当二个字段数据的大小超越页大小的25%的时候,才会接触压缩计谋。即对于八k页大小的数据库来讲,字段数据大小超越2k时才会接触压缩攻略。在那种情状下,假诺两张结构一样的表A和B,A中有个别字段存储的多寡低于二k,而B中该字段的数据超越2k,会油可是生B表所占有的空间反而小于A表。

从地方这个剧情来看,所谓的贮存属性,应该指的就是指向字段设置的种种计策。别的,还足以本着表设置fillfactor和toast.fillfactor那多个值。那多个值表示表的填充因子和toast表的填充因子,填充因子表示的是3个数据块的填写比例,即三个数据库填充到多少今后就不填充数据了,剩下的空中留做多少更新时使用。
在PG中,更新旧数据时,不会去除旧数据,而是在保存的空中里写入一条新数据,然后在旧数据和新数据里面创设二个链表,这样就毫无更新索引,索引找到旧数据时,会依赖链表找到新数据。然而只要填充因子设置的过大,更新旧数据时,保留的空中不足以存放更新的数目,且数额无法跨页存放,因而必须放在新的数据块,此时旧须要立异索引。会更耗费时间,因而,对于数据更新往往的表,那些值能够设置的小一些。

补偿:多个专门的学问的光景意思:

begin Transaction 能够知晓成新建三个还原点。
commit Transaction 提交那一个自begin tran早先的修改
rollback Transaction 表示复苏到上个还原点。
–set xact_abort on 全体回滚全数语句
–set xact_abort off 只回滚出错语句

begin tran
update,,,,,
commit tran

set xact_abort on 和 rollback Transaction 结果1致,都以回滚全体。
貌似把DML语句(select ,delete,update,insert语句)放在BEGIN TRAN…COMMIT
TRAN
之间作为二个事务管理,也正是那多少个话语实行进度中若是赶过错误,无论哪句蒙受错误,全部语句都会回滚到BEGIN
TRAN此前的情形。

参考:http://blog.csdn.net/gordennizaicunzai/article/details/50760950

时刻相关的层系:

997755.com澳门葡京 3

一经某些特征带档次结构,特征的“Attribute
Only”不能够勾上

 

SID表:只即使特点,不管该特征是还是不是是勾上了“仅属性Attribute
Only”选项,也不论该特征是不是带属性、文本、档次,特征都会有2个SID表,该表中特征自个儿是主键,而SID字段为整型类型字段,那样设计的目的是加块查询的率效(因为一般经过整型类型的字段进行关联与查询速度要快,Fact表里积存的就是SID,不是特色自个儿的值),所以SAP在筹算特征时都会调换二个SID表:

997755.com澳门葡京 4 997755.com澳门葡京 5

997755.com澳门葡京 6

 

M表:实质上不是表,而是视图,它的字段来自P表或Q表、也许是P表+Q表中的字段,存款和储蓄了特点的
Attribute 页签中的有所附加属性。

当全数属性都是时间非亲非故的品质时,就只有P表,未有Q表(有无P表、Q表,与是不是导航非亲非故,只与时间关于),此时M表的具备字段只来自于P表:

997755.com澳门葡京 7 997755.com澳门葡京 8

997755.com澳门葡京 9 997755.com澳门葡京 10

  • 当有着属性都以时间相关的习性时,就只有Q表,未有P表(有无P表、Q表,与是或不是导航毫不相关,只与时间关于),此时M表的兼具字段只来自于Q表:

997755.com澳门葡京 11 997755.com澳门葡京 12

997755.com澳门葡京 13 997755.com澳门葡京 14

 

  • 当有1对属性是时间相关的,另一片段又是与时光非亲非故的性质时,就能够有P表,也有Q表(有无P表、Q表,与是不是导航毫不相关,只与时光关于),此时M表的是由
    P表与Q表Join而来:

997755.com澳门葡京 15 997755.com澳门葡京 16

997755.com澳门葡京 17

997755.com澳门葡京 18

 

  • 当特征的Master data/texts 页签中的 With
    master
    data勾去掉,且未有增大属性时(加了质量后,激活时With
    master data会自行勾上),M表就不会存在,但只要 With master
    data勾上,就能有M表:

997755.com澳门葡京 19

  • 设若With
    master
    data勾上,尽管未有增大属性,都会生成M、P表:

997755.com澳门葡京 20 997755.com澳门葡京 21

 

 

P表:只要有时间无关的本性,就能够生成P表,且此时岁月非亲非故的属性都会成为该表的结合字段

X表:只要有时间非亲非故的领航属性,就能够生成X表,X表实质上就是SID,就好像特征本人有三个SID表同样,因为为了导航行速度度快,所以需求为导航属性生成对应的SID

Q表:只要有时光相关的性质,就会生成Q表,且此时岁月相关的习性都会成为该表的组成字段

Y表:只要有时间相关的领航属性,就能够生成Y表,与X表同样,Y表实质上也是SID,也是为了导航行速度度快而更改的

997755.com澳门葡京 22 
997755.com澳门葡京 23

997755.com澳门葡京 24 997755.com澳门葡京 25

997755.com澳门葡京 26 997755.com澳门葡京 27

T表:文本表

997755.com澳门葡京 28 997755.com澳门葡京 29

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website