1、generate_series函数:可以按不同的规则产生一系列的填充数据。
函数 | 参数类型 | 返回类型 | 描述 |
---|---|---|---|
generate_series(start, stop) | int 或 bigint | setof int 或 setof bigint(与参数类型相同) | 生成一个数值序列,从start 到 stop,步进为一 |
generate_series(start, stop, step) | int 或 bigint | setof int 或 setof bigint(与参数类型相同) | 生成一个数值序列,从start 到 stop,步进为step |
generate_series(start, stop, step_interval) | timestamp or timestamp with time zone | timestamp 或 timestamp with time zone(same as argument type) | 生成一个数值序列,从start 到 stop,步进为step |
2、CROSS JOIN: 交叉连接
- 如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积;
-
- 举例,下列A、B、C 执行结果相同,但是效率不一样:
-
- A:SELECT * FROM table1 CROSS JOIN table2
-
- B:SELECT * FROM table1,table2
-
-
- C:select * from table1 a inner join table2 b
-
- A:select a.*,b.* from table1 a,table2 b where a.id=b.id
-
- B:select * from table1 a cross join table2 b where a.id=b.id (注:cross join后加条件只能用where,不能用on)
-
- C:select * from table1 a inner join table2 b on a.id=b.id
-
- 一般不建议使用方法A和B,因为如果有WHERE子句的话,往往会先生成两个表行数乘积的行的数据表然后才根据WHERE条件从中选择。
-
- 因此,如果两个需要求交际的表太大,将会非常非常慢,不建议使用。
信息加载中,请等待
微信客服(速回)
微信客服(慢回)